1

在此处输入图像描述


嗨,我试着输入一个公式,比如ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""India"",RC,"""")"如果国家不是印度,那么 Check1、Check2 和 Check3 应该为空,否则它们应该显示自己的值。当我试图输入该公式时,excel 给了我循环引用警告。我只想要那个公式。任何帮助将不胜感激。

4

2 回答 2

0

当一个公式直接或间接地引用它自己的单元格时,它会创建一个循环引用。

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

您在 activecell 中编写公式,公式说明是否RC[-1]="India" 以及它的真实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
于 2013-04-01T07:19:20.303 回答
0

不能仅将RC其用作结果,因为它引用了当前公式。

选项 1:您需要有另一个单元格作为验证单元格,例如以下将在当前单元格的左侧创建一个单元格:

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

注释后的选项 2:如果您的代码行仅在左侧单元格不是印度的情况下清除当前单元格值,则使用以下命令:

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

选项 3:如果您在 RC 中的默认值必须保留,但如果 R​​C[-1] 的值变为不等于印度,则需要一个公式来覆盖它,您必须在公式中硬编码您的值,如下所示:

ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""India"",""" & ActiveCell.Value & ""","""")"
于 2013-04-01T11:04:22.297 回答