Excel - Enviar valor de celda a destino

En Microsoft, los cálculos y la liquidación de registros regulares se pueden realizar mediante fórmulas en el software de Office Excel. El envío de valores de una celda en Excel a destino se puede realizar copiando y pegando el valor de la columna en la celda objetivo. En una columna A si el valor es cero, y en la columna K el valor es mayor que cero, copie el valor de la columna "A" y péguelo en la columna "K". El valor de la columna es controlado por las funciones simples de copiar y pegar en Windows. Para agregar varias columnas, haga la fórmula como "C: K". El cálculo se realiza para la siguiente columna hasta que se alcanza la última columna y el valor se copia y se pega en la columna de 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.

Artículo Anterior Artículo Siguiente

Los Mejores Consejos