Fórmula de Excel para una celda.

Fórmula de Excel para una celda.

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.

información relacionada