2010-09-16 59 views
0

這裏是我執行excel公式的問題。條件自引用公式(僅在單元格值==「」時執行)

這些是要求:

  • 我有一個Excel 片若干行。
  • 在每行的末尾有一個名爲「Month」的 字段。
  • 如果有人在此 行中輸入新值,則應插入當前月份 。
  • 如果值被修改,則不得更改月份 。

要包括當月,我用一些像這樣的公式(A10僅僅是一個隨機的字段,將被填充):

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

現在我需要一些條件來檢查該字段包含一個一個月,如果是這樣的話,什麼都不要做。 我嘗試以下(A15應包含月):

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

,以決定是否領域應該由公式推來改變,我要檢查它的當前值。問題是,這最終會以對該領域本身的循環引用結束。

有沒有人有這種問題的工作解決方案? 我儘量不要在那裏使用任何VBA代碼。

回答

5

你不能用公式來做,你必須使用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 
+0

看來我必須與VBA生活在一起:-)感謝您的回答! – echox 2010-09-20 08:53:17

+0

不幸的是。爲了澄清,這不是真正的問題的自我指涉性(我們可以使用隱藏字段來解決這個問題),更重要的是你希望公式只在特定條件下評估,而實際上它們都是在任何時候重新評估他們引用的字段被更新,工作表被加載,以及其他一百種情況 - 所以你無法與「舊」值進行比較。 – Basic 2010-11-17 18:32:00

相關問題