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")。)
答案 0 :(得分:0)
出现此问题的原因是您将公式插入第1行的单元格中。
R[-1]C[-6]
指的是上面一行的单元格和放置公式的单元格左边的6个单元格,当公式放入行1时,这意味着它指的是一个单元格第零行,无效。这会导致#REF!
错误,即使您向下移动单元格(例如,在其上方插入标题行),#REF!
也无法更正,因为Excel不再知道它是什么本来应该说。
解决方案是确保您最初放置公式的单元格是公式实际有效的单元格。