2013-04-01 51 views
1

enter image description hereVBA的Excel公式爲以下條件(循環引用)


嗨,我試圖把一個公式一樣ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""India"",RC,"""")"如果國家不印度然後檢查1,CHECK2和Check3應該是空的,否則他們應該顯示自己的價值。當我試圖把這個公式放在Excel中時,我給出了循環引用警告。我只是想要那個公式。任何幫助將不勝感激。

回答

0

當公式將自己的單元格直接或間接引用回自己的單元格時,它會創建一個循環引用。

ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""India"",RC,"""")" 

你正在寫在activecell公式和公式表示,如果RC [-1] = 「印度」 ,如果其真正RC是一樣activecell。因此,您正在收到循環引用錯誤。

但是,如果你把這個公式在列E如下,它將工作。

Range("E2:E" & lastRow).FormulaR1C1 = "=IF(RC[-4]=""India"",RC[-3],"""")" 

另外下面是簡單的VBA代碼。

Sub sample() 
    Dim lastRow As Long 
    lastRow = Range("A65000").End(xlUp).Row 

    For i = 2 To lastRow 
     If (InStr(1, Cells(i, 1), "India") <= 0) Then 
      Range("B" & i & ":D" & i).Clear 
     End If 
    Next 
End Sub 
+0

@ Santhosh,RC在任何時候都會有一個默認值。如果RC [-1] =「印度」,那麼它應該顯示它自己的值,否則它應該顯示爲空。這是我的要求。 –

0

不能使用RC僅因爲這是參考當前公式的結果。

選項1:你需要有另一種細胞是有效的細胞,egthe下面創建一個到當前單元格的左邊一個單元格:評論後

ActiveCell.Offset(0,1).FormulaR1C1 = "=IF(RC[-2]=""India"",RC[-1],"""")" 

選項2:如果你的代碼行,只是要清除當前細胞值,如果離開小區不印度然後使用此:

If ActiveCell.Offset(0,-1).Value <> "India" Then ActiveCell.Value = "" 

選項3:如果RC中的默認值必須保留,但如果RC [-1]的值變得不等於印度需要重寫公式,則必須在公式中硬編碼您的值所以:

ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""India"",""" & ActiveCell.Value & ""","""")" 
+0

實際上,RC默認具有它自己的值。當我們在** TRUE **的情況下應用上述公式時,RC將採用第一個左側單元格的值,但是在** FALSE **情況下,RC應該顯示它的默認值。在你的公式中,你在其他情況下是空的。 –

+0

存儲的默認值在哪裏?或者你是否只想覆蓋這個RC值,如果是真的? – glh

+0

我只想覆蓋此RC值(如果爲true)。我已經理解你的邏輯'如果ActiveCell.Offset(0,-1).Value <>「印度」然後ActiveCell.Value =「」'但我想這應該作爲一個公式。感謝您的快速響應。 –