Мне нужна формула в Excel, чтобы скопировать и отобразить значение из ячейки A1 в B1, если значение ячейки A1 изменяется с положительного значения на ноль, значение в ячейке B1 не должно изменяться, оно должно сохранять свое предыдущее значение (которое является всегда больше нуля). Значения являются числами.

1 ответ1

2

Это не может быть сделано с помощью одной формулы. Но со следующим кодом VBA, который основан на событии SelectionChange, он работает:

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

Или, если вы хотите иметь больше исходных и целевых ячеек (как будет запрошено позже):

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

Поместите этот код в код VBA на рабочем листе, где вы хотите, чтобы это было сделано. Для этого выполните следующие инструкции:

  • В Excel с открытой рабочей книгой нажмите ALT+F11 . Это открывает редактор VBA.
  • Проверьте дерево "Project" слева и найдите свою книгу Excel и рабочий лист. Щелкните правой кнопкой мыши (с помощью мыши) на этом листе и выберите « View Code .
  • Скопируйте и вставьте приведенный выше код в редактор.
  • Закройте редактор VBA и все должно работать как положено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .