Excel - Enviar valor de celda a destino
Problema
¿Es posible enviar el valor de una celda (copiar y pegar especial) a otra celda donde el valor no se alteraría cuando el valor de la fuente cambia a '0'?
La hoja de trabajo de resumen de mi calculadora de nómina obtiene información de otras hojas de trabajo cada semana dentro del archivo Excel y calcula la nómina de la semana actual. La semana anterior tenía valores, pero ahora, durante la semana actual, las celdas de la semana anterior son 0.
Mi objetivo es retener los valores de la semana anterior en otra matriz de celdas para que pueda tener un total acumulado para el mes.
Ejemplo:
A3 tiene la fórmula:
= IF (A3 = 'Calculadora de nómina'! M2, VLOOKUP (H1, 'Calculadora de nómina'! $ B $ 3: $ M $ 28, 8, FALSO), 0)
Ese valor debe publicarse en K3, pero solo si es mayor que '0'.
Si A3 devuelve un valor de '0', cualquier valor mayor que '0' que se haya publicado previamente en K3 se quedaría solo.
He estado haciendo esto fácilmente de forma manual simplemente copiando los valores que quiero guardar, luego utilizando el comando 'pegar especial' y seleccionando 'valores', pegados al objetivo. Los 'omitir espacios en blanco' no hacen nada. La macro:
Sub Macro1 ()
'
'Macro1 Macro
'
'
Rango ("C3"). Seleccione
ActiveWindow.ScrollRow = 10
Rango ("C3: I52"). Seleccione
Selección.copia
Rango ("K3"). Seleccione
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
Verdadero, Transponer: = Falso
Rango ("K3"). Seleccione
Application.CutCopyMode = False
End Sub
Sobrescribe los valores de las semanas anteriores con ceros, ya sea que elija omitir espacios en blanco o no (probablemente porque las celdas son ceros, ¡no en blanco!)
Estoy trabajando con la matriz A3: I54 y deseo copiar y pegar cualquier valor mayor que '0' a K3: Q54 reteniendo cualquier valor que se haya publicado previamente en K3: Q54 que sea mayor que '0'.
Solución
Tal vez esto pueda llevarlo en la dirección correcta si mi interpretación es correcta.
Esto comparará la columna A con lo que está actualmente en la columna K ........
A1 compara el valor en K1
A2 compara el valor en K2
etc ....
Si la columna A es cero y la columna K es mayor que cero, entonces mantenga el valor en la columna K. De lo contrario, copie el valor en la columna A en la columna K.
Sub Macro1 () Dim jj = 3 Do Until Range ("A" & j) = "" Si Range ("A" & j) = 0 Entonces Range ("K" & j) = Range ("K" & j) Else Range ("K" & j) = Range ("A" & j) End If j = j + 1 Loop End Sub
Para agregar varias columnas, haga que la macro se vea como "C: K"
Sub Macro1 () Dim jj = 3 Do Until Range ("C" & j) = "" Si Range ("C" & j) = 0 Entonces Range ("K" & j) = Range ("K" & j) Else Range ("K" & j) = Range ("C" & j) End If If Range ("D" & j) = 0 Then Range ("L" & j) = Range ("L" & j) Else Rango ("L" & j) = Rango ("D" & j) Fin Si If Rango ("E" & j) = 0 Luego Rango ("M" & j) = Rango ("M" & j) Rango Else ("M" & j) = Rango ("E" & j) Fin Si If Rango ("F" & j) = 0 Luego Rango ("N" & j) = Rango ("N" & j) Rango Else ( "N" & j) = Rango ("F" & j) Fin Si If Rango ("G" & j) = 0 Luego Rango ("O" & j) = Rango ("O" & j) Otro Rango (" O "& j) = Rango (" G "& j) Fin Si If Rango (" H "& j) = 0 Luego Rango (" P "& j) = Rango (" P "& j) Otro Rango (" P "& j) = Rango (" H "& j) Fin Si If Rango (" I "& j) = 0 Luego Rango (" Q "& j) = Rango (" Q "& j) Otro Rango (" Q " & j) = Range ("I" & j) End If j = j + 1 Loop End Sub
Tenga en cuenta que
Gracias a WutUp WutUp por este consejo en el foro.