达到特定结果时,使用另一个单元格中的数据更新单元格中的数据

时间:2018-08-28 12:42:45

标签: excel if-statement excel-formula

我正在尝试这样做,以便当一个单元格( B1 )的值为0时,由用户输入的文本 A1 现在被替换为 C1 中的数据,也是用户输入的数据。这意味着公式不能放置在 A1 C1 中,因为它们是用户输入的数据(B1已经具有计算其值的公式。)

本能地我想使用= IF(B1 = 0,A1 = C1,“”),但显然不起作用,因为A1 = C1正在检查它们是否彼此相等,而不是用C1代替A1。

对此可能会有一个简单的解决方案,但我无法找到一种使之工作的方法。

2 个答案:

答案 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,"")