Fórmula do Excel para uma célula

0

Eu preciso de uma fórmula no Excel, para copiar e exibir um valor da célula A1 para B1, se o valor da célula A1 for alterado de um valor positivo para zero, o valor na célula B1 não deve mudar, ele deve manter seu valor anterior (que é sempre maior que zero). O valor são números.

    
por kai k 12.08.2014 / 16:32

1 resposta

2

Isso não pode ser feito apenas com a fórmula. Mas com o código VBA a seguir, isso é baseado no evento SelectionChange , 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

Ou, se você quiser ter mais células de origem e de destino (conforme solicitado posteriormente):

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 do código VBA da planilha onde você quer que isso seja feito. Para fazer isso, siga estas instruções:

  • No Excel, com a sua pasta de trabalho aberta, clique em ALT + F11 . Isso abre o editor do VBA.
  • Verifique a árvore "Projeto" à esquerda, encontre sua pasta de trabalho do Excel e a planilha. Clique com o botão direito do mouse (com o mouse) nessa planilha e selecione View Code .
  • Copie e cole o código acima no editor.
  • Feche o editor do VBA e tudo deve funcionar como esperado.
por 12.08.2014 / 16:53