Excel VBA公式为文本问题
在我的Excel 2016 VBA中,我有这样的代码:
Range("M2").Select ActiveCell.FormulaR1C1 = "=IFERROR(IF(E2=""Sgl"",K2,L2),"")"
当它被放置在单元格中时,公式不是结果。 要手动解决这个问题,我必须从文本更改为常规,实际的代码也需要改变:
单元格M2说: =IFERROR(IF(E2="Sgl",K2,L2),")
应该说: =IFERROR(IF(E2="Sgl",K2,L2),"")
在右括号之前结束
这是logging(我删除RC的绝对单元格参考,当它不起作用),所以我不知道是什么原因或如何解决它。 任何帮助,将不胜感激。 谢谢
我想你只需要在最后添加额外的报价。 因为引号表示一个string,所以你需要让它们中的两个产生一个 – 这意味着你需要四个才能产生两个。
Range("M2").Formula = "=IFERROR(IF(E2=""Sgl"",K2,L2),"""")"
其他注意事项:
- 你不需要
Range().Select
然后对抗ActiveCell
。 只需在Range对象上直接调用方法/属性即可 - 我认为你的情况下,
Formula
将起作用。 当公式是相对的时候,R1C1
是方便的,但是在这种情况下,你正在引用实际的单元格。 你做了什么没有错,但仅供参考
要在IFERROR中生成两个双引号(“”),需要在vbastring中input4个双引号(“”“”)。
我通过移除IFERROR部分来解决这个问题,就好像在前面的列中没有任何值一样,只是把它留空了,而不是显示错误信息:
Columns("M:P").Select Selection.NumberFormat = "General" Range("M2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-8]=""SGL"",RC[-2],RC[-1])" Range("M2").Select