FormulaR1C1中的结肠

时间:2014-10-08 18:20:54

标签: excel-vba vba excel

我的vba代码中有以下行

[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],Rates!A:H,3,FALSE),"""")"

运行时,它会在Excel中创建:

=IFERROR(VLOOKUP(A8,Rates!A:(H),3,FALSE),"")

我不确定为什么'H'出现在括号中。当然,这个公式不起作用。当我删除括号时,它确实有效。但是,如何让VBA首先正确地创建公式呢?

2 个答案:

答案 0 :(得分:1)

其实原因很简单。一方面,你说的是.FormulaR1C1,另一方面你正在使用这两种符号。坚持R1C1A1

所以试试这个

[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),"""")"