Necesito una fórmula en Excel para copiar y mostrar un valor de la celda A1 a B1, si el valor de la celda A1 se cambia de un valor positivo a cero, el valor de la celda B1 no debe cambiar, debe conservar su valor anterior (que es siempre mayor que cero). El valor son números.
Respuesta1
Esto no se puede hacer sólo con fórmulas. Pero con el siguiente código VBA, que se basa en elEvento de cambio de selección, funciona:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Const SourceCell = "$A$1"
Const TargetCell = "$A$2"
If Target.Address = SourceCell Then
If Range(SourceCell).Value > 0 Then
Range(TargetCell).Value = Range(SourceCell).Value
End If
End If
End Sub
O, si desea tener más celdas de origen y de destino (como se solicita más adelante):
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim SourceCells(), TargetCells() As Variant
Dim i As Integer
' Make sure the cells are declared with $'s
' Make sure that the arrays contain the same number of elements
SourceCells = Array("$B$1", "$B$2", "$F$5")
TargetCells = Array("$A$1", "$A$2", "$H$12")
For i = 0 To UBound(SourceCells)
If Target.Address = SourceCells(i) Then
If Range(SourceCells(i)).Value > 0 Then
Range(TargetCells(i)).Value = Range(SourceCells(i)).Value
End If
End If
Next i
End Sub
Coloque este código dentro del código VBA delhoja de cálculodonde desea que se haga esto. Para hacer esto, siga estas instrucciones:
- En Excel, con su libro de trabajo abierto, haga clic en
ALT
+F11
. Esto abre el editor VBA. - Consulte el árbol "Proyecto" a la izquierda y busque su libro de Excel y la hoja de trabajo. Haga clic derecho (con el mouse) en esa hoja de trabajo y seleccione
View Code
. - Copie y pegue el código anterior en el editor.
- Cierre el editor de VBA y todo debería funcionar como se esperaba.