VBA中的IF功能

时间:2016-06-14 11:16:44

标签: excel vba excel-vba

我想要创建以下内容: 如果列C中的单元格包含值TRUE,则应将列B中的相应值复制到AJ列中的相应单元格。

这是我到目前为止所做的:

Range("AJ2").Select
ActiveCell.FormulaR1C1 = "=IF(C[-33]=TRUE,B:B,0)"
Range("AJ2").Select
Selection.AutoFill Destination:=Range("AJ2:AJ1324")

运行宏时出现问题。以下语句将复制到AJ列的单元格中: =IF(C:C=TRUE;B:(B);0), 在哪里我期待以下:

=IF(C:C=TRUE;B:B;0)

有人可以告诉我我的错误在哪里吗?

由于

2 个答案:

答案 0 :(得分:0)

ActiveCell.FormulaR1C1 = "=IF(C[-33]=TRUE,RC2,0)"

答案 1 :(得分:0)

您正在公式中混合R1C1和A1类型参考。 B:B不是R1C1参考。

如果你想:

=IF(C:C=TRUE;B:B;0)

然后你需要使用:

"=IF(C[-33]=TRUE,C[-34],0)"

我怀疑这可能不是你真正想要的公式,但你还没有解决这个问题。

获得正确公式的一种方法是在单元格中输入您真正想要的内容,然后检查cell.FormulaR1C1属性,以查看该公式是如何以不同的表示法形成的。

我怀疑,根据你的描述,你真正想要的是:

"=IF(RC[-33]=TRUE,RC[-34],0)"

将在单元格中显示为:

=IF(C2=TRUE;B2;0)

"=IF(RC3=TRUE,RC2,0)"
制造

=IF($C2=TRUE;$B2;0)