2016-09-14 72 views
0

我试图将索引匹配数组公式插入单元格。我的问题是,我需要在公式中使用一个变量,这会导致公式中的单元格引用被撇号包围。我会更好地解释自己用一个例子:当用vba插入公式时避免撇号

这是我的代码至今:

Cells(loop, "H").value = "=INDEX('Tab Asistencias'!R1C1:R20000C4,MATCH(1,('Tab Asistencias'!R1C2:R20000C2=R2C2)*('Tab Asistencias'!R1C1:R20000C1=E" & loop & "),0),4)" 

而且,当公式已插入小区H1它看起来像这样:

= INDICE('Tab Asistencias'!$ A $ 1:$ D $ 20000; COINCIDIR(1;('Tab Asistencias'!$ B $ 1:$ B $ 20000 = $ B $ 2)*('Tab Asistencias'!$ A $ 1:$ A $ 20000 ='E2'); 0); 4)

几乎在公式结尾的E2单元格中的两个撇号是那些打扰我的。因为Excel不会将E2识别为有效的单元格引用。

我正在做一个西班牙语版本的Excel(它必须这样做)。

在此先感谢,任何帮助将不胜感激。

+0

最简单的办法弄清楚事情VBA是使用录制宏并检查生成的代码。您将不得不使用'.FormulaArray ='而不是'.Value =' – Slai

+0

感谢您的回答。已经尝试过,并使用评估,但它也没有工作。我将只将公式作为一个值插入,然后使用SendKey方法模拟按F2,然后按Ctrl + Shift + Enter。 – mFranck

回答

0

您应该重新命名循环,因为在英语版本的VBA循环中是一个保留字。

其中loop = 2; E" & loop & "正在评估为'E2',因为您正在将R1C1样式表示法与A1样式表示法混合在一起。

这里我使用x而不是循环和R" & x & "C5来得到适当的引用。

Cells(x, "H").Value = "=INDEX('Tab Asistencias'!R1C1:R20000C4,MATCH(1,('Tab Asistencias'!R1C2:R20000C2=R2C2)*('Tab Asistencias'!R1C1:R20000C1=R" & x & "C5),0),4)" 

输出:

=INDEX('Tab Asistencias'!$A$1:$D$20000,MATCH(1,('Tab Asistencias'!$B$1:$B$20000=$B$2)*('Tab Asistencias'!$A$1:$A$20000=$E$10),0),4)

+0

非常感谢!它效果很好。 – mFranck