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

ech*_*hox 0 excel vba excel-2007

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

这些是要求:

  • 我在excel表中有几行.
  • 在每行的末尾有一个名为"Month"的字段.
  • 如果有人在此行中输入新值,则应插入当前月份.
  • 如果修改了值,则不得更改月份.

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

=IF(A10<>0; MONTH(NOW()); "")
Run Code Online (Sandbox Code Playgroud)

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

=IF(A15 <> ""; IF(A10<>0; MONTH(NOW()); "") ; )
Run Code Online (Sandbox Code Playgroud)

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

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

Dic*_*ika 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
Run Code Online (Sandbox Code Playgroud)