具有负行参考的R1C1格式导致#REF!电子表格中的错误

时间:2016-09-08 20:57:13

标签: excel-vba vba excel

VBA中的这个公式:

ActiveCell.FormulaR1C1 = _
        "=IF(RC[-6]=""ADD"",CONCATENATE(""QUIET "",RC[-6],"" "",RC[-5],"" "",RC[-4],"" "",RC[-3],"" "",RC[-2]),IF(RC[-6]=""DEL"",CONCATENATE(""QUIET "",RC[-6],"" "",RC[-5],"" "",RC[-4]),IF(OR(**R[-1]C[-6]**=""ADD"",**R[-1]C[-6]**=""DEL""),""//FacultyAG   EOJ"","""")))"

单元格中此公式的结果:

=IF(RC[-6]="ADD",CONCATENATE("QUIET ",RC[-6]," ",RC[-5]," ",RC[-4]," ",RC[-3]," ",RC[-2]),IF(RC[-6]="DEL",CONCATENATE("QUIET ",RC[-6]," ",RC[-5]," ",RC[-4]),IF(OR(**#REF!**="ADD",**#REF!**="DEL"),"//FacultyAG   EOJ","")))

我可以手动修改forumla(相对地址" on")并且它可以正常工作。但是每当VBA提出这些内容时,我都会得到这些#REF!错误。它似乎是这些-6行引用。 (-6是有效列(" 1")。)

1 个答案:

答案 0 :(得分:0)

出现此问题的原因是您将公式插入第1行的单元格中。

R[-1]C[-6]指的是上面一行的单元格和放置公式的单元格左边的6个单元格,当公式放入行1时,这意味着它指的是一个单元格第零行,无效。这会导致#REF!错误,即使您向下移动单元格(例如,在其上方插入标题行),#REF!也无法更正,因为Excel不再知道它是什么本来应该说。

解决方案是确保您最初放置公式的单元格是公式实际有效的单元格。