我的vba代码中有以下行
[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],Rates!A:H,3,FALSE),"""")"
运行时,它会在Excel中创建:
=IFERROR(VLOOKUP(A8,Rates!A:(H),3,FALSE),"")
我不确定为什么'H'出现在括号中。当然,这个公式不起作用。当我删除括号时,它确实有效。但是,如何让VBA首先正确地创建公式呢?
答案 0 :(得分:1)
其实原因很简单。一方面,你说的是.FormulaR1C1
,另一方面你正在使用这两种符号。坚持R1C1
或A1
所以试试这个
[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(R[7]C,Rates!C:C[7],3,FALSE),"""")"
或
[A1].Formula = "=IFERROR(VLOOKUP(A8,Rates!A:H,3,FALSE),"""")"
答案 1 :(得分:0)
由于某种原因,试图用VBA编写VLOOKUP会因此而变得很奇怪。解决这个问题的最佳方法是编写代码来命名范围,然后在VLOOKUP中使用该名称。
ActiveSheet.Names.Add Name:="VLRange", RefersTo:="=Rates!" & Range(Cells(1, 1), Cells(lastrow, 1)).Address
然后你的公式编写代码是
[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],VLRange,3,FALSE),"""")"