![Excel 单元格公式](https://linux22.com/image/1419078/Excel%20%E5%8D%95%E5%85%83%E6%A0%BC%E5%85%AC%E5%BC%8F.png)
我需要一个 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
将此代码放入工作表您希望在哪里完成此操作。为此,请按照以下说明进行操作:
- 在 Excel 中,打开工作簿后,点击
ALT
+F11
。这将打开 VBA 编辑器。 - 检查左侧的“项目”树,找到您的 Excel 工作簿和工作表。用鼠标右键单击该工作表并选择
View Code
。 - 将上面的代码复制粘贴到编辑器中。
- 关闭 VBA 编辑器,一切都将按预期工作。