我正在尝试这样做,以便当一个单元格( B1 )的值为0时,由用户输入的文本 A1 现在被替换为 C1 中的数据,也是用户输入的数据。这意味着公式不能放置在 A1 或 C1 中,因为它们是用户输入的数据(B1已经具有计算其值的公式。)
本能地我想使用= IF(B1 = 0,A1 = C1,“”),但显然不起作用,因为A1 = C1正在检查它们是否彼此相等,而不是用C1代替A1。
对此可能会有一个简单的解决方案,但我无法找到一种使之工作的方法。
答案 0 :(得分:1)
没有办法让公式和用户输入位于同一字段中。为此,您将需要如下所示的VBA解决方案。
使用宏编辑器(alt + f11)在需要触发代码的工作表中放置以下内容:
Option Explicit
Private Sub Worksheet_Change(ByVal rng As Range)
Dim sh As Worksheet
'only trigger on when column 2 experiences a change
If rng.Column = 2 And rng.Value2 = 0 Then
Set sh = rng.Parent
sh.Cells(rng.Row, 1).Value2 = sh.Cells(rng.Row, 3).Value2
End If
End Sub
请注意,此处B列编号为2,C为3,依此类推。 仅当列B更改为0时,此“覆盖”才会触发,当用户随后覆盖A时,不会强制C进入A。如果您希望它在A,B或C发生变化时触发,则将触发条件重写为:
If rng.Column <= 3 And rng.Value2 = 0 Then
如果该答案对您有所帮助,请不要忘记投票。谢谢!
答案 1 :(得分:0)
在公式中使用单元格时不需要等号:
=IF(B1=0,C1,"")