使用vba

时间:2016-09-14 22:00:22

标签: excel vba excel-vba

我正在尝试将Index-Match数组公式插入到单元格中。我的问题是,我需要在公式中使用一个变量,这会导致公式中的单元格引用被撇号包围。我会用一个例子来解释自己:

这是我到目前为止的代码:

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上这样做(必须以这种方式完成)。

提前致谢,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您应该重命名Loop,因为在英文版的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)