Excel - изпраща стойността на клетката към целта
Проблем
Възможно ли е да се изпрати стойността на клетката (копиране и поставяне на специална) в друга клетка, където стойността няма да бъде нарушена, когато стойността на източника се промени на '0'?
Работният лист на калкулатора на работната заплата получава информация от други работни листове всяка седмица в Excel файла и изчислява работната заплата за текущата седмица. Предходната седмица имаше стойности, но сега, през текущата седмица, клетките за предходната седмица са 0.
Целта ми е да запазя стойностите от предходната седмица в друг масив от клетки, така че да имам текуща сума за месеца.
Пример:
A3 има формулата:
= Ако (A3 = 'Калкулатор на заплати'! M2, VLOOKUP (H1, 'Калкулатор на заплатите'! $ B $ 3: $ M $ 28, 8, FALSE), 0)
Тази стойност трябва да бъде осчетоводена в K3, но само ако е повече от "0".
Ако A3 върне стойност '0', тогава всяка стойност, по-голяма от '0', която е била преди това публикувана в K3, ще бъде оставена сама.
Лесно го правя ръчно, като просто копирам стойностите, които искам да запазя, след това използвам командата 'paste special' и избирайки 'values', поставени към целта. „Пропуските“ не правят нищо. Макросът:
Sub Macro1 ()
"
- Macro1 Macro
"
"
Range ( "C3"). Изберете
ActiveWindow.ScrollRow = 10
Range ( "C3: I52") Изберете.
Selection.Copy
Range ( "K3"). Изберете
Selection.PasteSpecial Paste: = xlValues, Операция: = xlNone, SkipBlanks: = _
True, Transpose: = False
Range ( "K3"). Изберете
Application.CutCopyMode = Невярно
Край Под
Той презаписва стойностите от предишните седмици с нули, независимо дали избирам пропуски или не (вероятно защото клетките са нули, а не празни!)
Работя с масив A3: I54 и желая да копирам и поставям стойности, по-големи от '0' в K3: Q54 запазвайки всички стойности, които преди това са били публикувани в K3: Q54, които са по-големи от '0'.
Решение
Може би това може да ви отведе в правилната посока, ако моето тълкуване е правилно.
Това ще сравни колона А с това, което понастоящем е в графа K ........
A1 сравнява стойността в K1
A2 сравнява стойността в K2
и т.н ....
Ако колона А е нула и колона К е по-голяма от нула, тогава запазете стойността в колона К. В противен случай копирайте стойността в колона А в колона K.
Sub Macro1 () Dim jj = 3 Да До диапазона ("A" & j) = "" Ако Обхват ("A" & j) = 0 Тогава Обхват ("K" & j) = Обхват ("K" & j) Ел. Диапазон ("K" & j) = Обхват ("A" & j) Край Ако j = j + 1 Sub End End Sub
За да добавите няколко колони, направете макроса да изглежда като „C: K“
Sub Macro1 () Dim jj = 3 Да До диапазона ("C" & j) = "" Ако Обхват ("C" & j) = 0 Тогава Обхват ("K" & j) = Обхват ("K" & j) Ел. Диапазон ("K" & j) = Обхват ("C" & j) Край Ако Ако Обхват ("D" & j) = 0 Тогава Обхват ("L" & j) = Обхват ("L" & j) Обхват ("L" & j) = Обхват ("D" & j) Край Ако Ако диапазон ("E" & j) = 0 Тогава Обхват ("M" & j) = Обхват ("M" & j) Else Range ("M" & j) = Обхват ("E" & j) Край Ако Ако Обхват ("F" & j) = 0 Тогава Обхват ("N" & j) = Обхват ("N" & j) Други диапазон ( "N" & j) = Обхват ("F" & j) Край Ако Ако Обхват ("G" & j) = 0 Тогава Обхват ("O" & j) = Обхват ("O" & j) Else Range (" O "& j) = Обхват (" G "& j) Край Ако Ако диапазон (" H "& j) = 0 Тогава Обхват (" P "& j) = Обхват (" P "& j) Else Range (" P ") "& j) = Обхват (" H "& j) Край Ако Ако диапазон (" I "& j) = 0 Тогава диапазон (" Q "& j) = Обхват (" Q "& j) Else Range (" Q ") & j) = Обхват ("I" & j) Край Ако j = j + 1 Sub End край
Отбележи, че
Благодарение на WutUp WutUp за този съвет на форума.