2016-09-14 32 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