Excel - Wyślij wartość komórki do celu
Kwestia
Czy możliwe jest wysłanie wartości komórki (kopiowanie i wklejanie specjalne) do innej komórki, w której wartość nie zostałaby naruszona, gdy wartość źródłowa zmieni się na „0”?
Arkusz podsumowania mojego kalkulatora płac pobiera informacje z innych arkuszy każdego tygodnia w pliku Excel i oblicza listę płac bieżącego tygodnia. Poprzedni tydzień miał wartości, ale teraz, w bieżącym tygodniu, komórki w poprzednim tygodniu wynoszą 0.
Moim celem jest zachowanie wartości z poprzedniego tygodnia w innym zestawie komórek, dzięki czemu mogę mieć sumę bieżącą za miesiąc.
Przykład:
A3 ma wzór:
= JEŻELI (A3 = 'Kalkulator listy płac'! M2, WYSZUKAJ.PIONOWO (H1, 'Kalkulator listy płac'! $ B $ 3: $ M $ 28, 8, FAŁSZ), 0)
Wartość ta musi być wysłana do K3, ale tylko wtedy, gdy jest większa niż „0”.
Jeśli A3 zwróci wartość „0”, to każda wartość większa niż „0”, która została wcześniej opublikowana w K3, zostanie pozostawiona sama.
Łatwo to robiłem ręcznie, po prostu kopiując wartości, które chcę zapisać, a następnie używając polecenia „wklej specjalne” i wybierając „wartości”, wklejone do celu. „Pomiń puste” nic nie robi. Makro:
Sub Macro1 ()
'
„Makro1 Makro
'
'
Zakres („C3”). Wybierz
ActiveWindow.ScrollRow = 10
Zakres („C3: I52”). Wybierz
Wybór. Kopiuj
Zakres („K3”). Wybierz
Selection.PasteSpecial Paste: = xlValues, Operacja: = xlBrak, SkipBlanks: = _
Prawda, Transpose: = False
Zakres („K3”). Wybierz
Application.CutCopyMode = False
Napis końcowy
Zastępuje wartości poprzednich tygodni zerami, czy wybieram pomijanie pustych, czy nie (prawdopodobnie dlatego, że komórki są zerami, a nie puste!)
Pracuję z tablicą A3: I54 i chcę skopiować i wkleić dowolne wartości większe niż „0” do K3: Q54 zachowując wszystkie wartości, które zostały wcześniej opublikowane w K3: Q54, które są większe niż „0”.
Rozwiązanie
Może to pomoże ci we właściwym kierunku, jeśli moja interpretacja jest poprawna.
To porówna kolumnę A z tym, co jest aktualnie w kolumnie K ........
A1 porównuje wartość w K1
A2 porównuje wartość w K2
itp....
Jeśli kolumna A jest równa zero, a kolumna K jest większa od zera, zachowaj wartość w kolumnie K. W przeciwnym razie skopiuj wartość z kolumny A do kolumny K.
Sub Macro1 () Dim jj = 3 Do Until Range („A” & j) = „” Jeśli Range („A” i j) = 0 Następnie Range („K” i j) = Range („K” i j) Else Range („K” i j) = Range („A” i j) End If j = j + 1 Loop End Sub
Aby dodać wiele kolumn, zmień makro na „C: K”
Sub Macro1 () Dim jj = 3 Do Until Range („C” & j) = „” Jeśli Range („C” i j) = 0 Następnie Range („K” i j) = Range („K” i j) Else Range („K” i j) = Zakres („C” i j) Koniec jeśli If Zakres („D” i j) = 0 Wtedy Zakres („L” i j) = Zakres („L” i j) Inne Zakres („L” i j) = Zakres („D” i j) Koniec jeśli If Zakres („E” i j) = 0 Wtedy Zakres („M” i j) = Zakres („M” i j) Zakres inny („M” i j) = Zakres („E” i j) Koniec, jeśli zakres („F” i j) = 0 Wtedy Zakres („N” i j) = Zakres („N” i j) Zakres inny ( „N” i j) = Zakres („F” i j) Koniec Jeśli Jeśli Zakres („G” i j) = 0 Następnie Zakres („O” i j) = Zakres („O” i j) Zakres inny („ O "& j) = Zakres („ G ”i j) Koniec jeśli zakres („ H ”i j) = 0 Wtedy Zakres („ P ”i j) = Zakres („ P ”i j) Zakres inny („ P ” „& j) = Zakres („ H ”i j) Koniec jeśli If Zakres („ I ”i j) = 0 Wtedy Zakres („ Q ”i j) = Zakres („ Q ”i j) Zakres inny („ Q ” & j) = Zakres („I” i j) Koniec Jeśli j = j + 1 Sub pętli Koniec
Zauważ, że
Podziękowania dla WutUp WutUp za tę poradę na forum.