代码之家  ›  专栏  ›  技术社区  ›  echox Petter Nordlander

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

  •  0
  • echox Petter Nordlander  · 技术社区  · 16 年前

    这是我在执行Excel公式时遇到的问题。

    这些是要求:

    • 我在Excel中有几行 床单。
    • 每行的末尾都有一个 字段名为“Month”。
    • 如果有人在此输入新值 行,当前月份应为 插入。
    • 如果修改了值,则月份 不得更改。

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

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

    现在,我需要一些条件来检查字段是否包含一个月,如果是这样,什么也不做。 我尝试了以下方法(A15应该包含月份):

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

    要确定字段是否应按公式更改,我必须检查其当前值。问题是,这将以对字段本身的循环引用结束。

    有人能解决这种问题吗? 我尽量不使用里面的任何VBA代码。

    1 回复  |  直到 16 年前
        1
  •  5
  •   Dick Kusleika    16 年前

    你不能用公式,你必须用vba。公式不能引用自身。

    另一个问题是,现在每次重新计算时都会改变。所以即使有了第一个公式,这个月也不会保持静止。

    如果决定使用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