Мне нужна формула в Excel, чтобы скопировать и отобразить значение из ячейки A1 в B1, если значение ячейки A1 изменяется с положительного значения на ноль, значение в ячейке B1 не должно измениться, оно должно сохранить свое предыдущее значение (которое всегда больше нуля). Значением являются числа.
решение1
Это невозможно сделать только с помощью формул. Но с помощью следующего кода 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. - Проверьте дерево "Проект" слева, найдите книгу Excel и рабочий лист. Щелкните правой кнопкой мыши на этом рабочем листе и выберите
View Code
. - Скопируйте и вставьте приведенный выше код в редактор.
- Закройте редактор VBA, и все должно работать так, как и ожидалось.