IFfunction在VBA中

我想要创build以下内容:如果列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") 

运行macros时出现问题。 以下语句被复制到列AJ: =IF(C:C=TRUE;B:(B);0) ,我期望以下内容:

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

请有人告诉我,我的错误在哪里?

谢谢

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

您正在公式中混合R1C1和A1types的引用。 B:B不是R1C1参考。

如果你想:

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

那么你需要使用:

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

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

获得正确公式的一种方法是将你真正想要的东西input到单元格中,然后检查单元格。方法R1C1的属性看看这个公式是如何在不同的表示法中形成的。

从我的描述来看,我怀疑你真正想要的是:

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

在单元格中显示为:

 =IF(C2=TRUE;B2;0) 

要么

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

生产

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