条件自引用公式(仅在单元格值==“”时执行)

时间:2010-09-16 15:26:53

标签: excel vba excel-2007

这是我执行excel公式的问题。

这些是要求:

  • 我在excel中有几行 片材。
  • 每行结尾都有一个 字段称为“月”。
  • 如果有人在此输入新值 行,本月应该是 插入。
  • 如果值被修改,则为月份 不能改变。

要包括当前月份,我使用这样的公式(A10只是一个随机字段,将被填充):

=IF(A10<>0; MONTH(NOW()); "")

现在我需要一些条件来检查该字段是否已包含一个月,如果是,则不执行任何操作。 我尝试了以下(A15应该包含月份):

=IF(A15 <> ""; IF(A10<>0; MONTH(NOW()); "") ; )

要确定是否应该通过公式更改字段,我必须检查其当前值。问题是,这将最终成为对字段本身的循环引用。

有没有人为这类问题找到合适的解决方案? 我尽量不在那里使用任何VBA代码。

1 个答案:

答案 0 :(得分:5)

你无法使用公式,你必须使用VBA。公式不能自称。

另一个问题是每次重新计算时NOW都会改变。因此,即使使用您的第一个公式,月份也不会保持不变。

如果您决定使用VBA,请右键单击工作表标签,然后选择查看代码。你需要的代码看起来像这样

Private Sub Worksheet_Change(ByVal Target As Range)

    'We only care if cells are changed in a certain range
    If Not Intersect(Target, Me.Range("A1:G10")) Is Nothing Then

        'Only do this if there's nothing in row 15 for whatever column
        'was changed
        If IsEmpty(Me.Cells(15, Target.Column).Value) Then

            'Put the month in row 15 of the current column
            Me.Cells(15, Target.Column).Value = Month(Now)
        End If
    End If

End Sub