我希望通过直接键输入来填充单元格值,或者从公式中得出单元格值。
例如:直接在单元格 A4 中输入数字,或者让 A4 的值 = A2 + A3
如果使用直接键盘输入,我不希望公式被覆盖。
谢谢,希望这能澄清一下。
答案1
一旦将值输入到单元格中,该单元格中的任何公式都将被覆盖。不过,您可以使用 VBA 例程来恢复公式。您的要求应该包括优先顺序的逻辑,即在什么情况下应使用公式以及在什么情况下手动输入的数字“获胜”。
以下代码在这些前提下有效:
- 单元格 A2 或 A3 发生更改
- A2 和 A3 都必须具有值
因此,当编辑 A2 或 A3 且两个单元格都包含值时,宏会将 =A2+A3 写入单元格 A4。如果 A2 或 A3 中的任何值是文本,则宏仍将运行,并且 Excel 将显示添加带有数字的文本的错误消息。使用 Sum() 可避免出现错误消息。
如果随后编辑单元格 A4 并覆盖公式,则该值将继续显示,直到再次编辑 A2 或 A3。
如果这不符合您的要求,请详细说明。
代码进入 Sheet 模块(右键单击 Sheet 选项卡,单击“查看代码”,将代码粘贴到大代码区域。)
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A2:A3")) Is Nothing Then
If WorksheetFunction.Count(Range("A2:A3")) = 2 Then
Range("A4").Formula = "=A2+A3"
End If
End If
End Sub
答案2
VBA 可以做到这一点,它需要在工作表 VBA 中,并且可能需要进行一些调整
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count = 1 Then
If .Column = 4 And .Row = 1 Then
If IsEmpty(.Value) And .Offset(-1) <> "" AND .Offset(-2) <> "" Then
Application.EnableEvents = False
.FormulaR1C1 = "=A2+A3"
Application.EnableEvents = True
End If
End If
End If
End With
End Sub