2015-07-01 88 views
0

一式陣列內的字符串需要一些幫助在下面引用在Excel VBA

我的代碼索引式陣列引用的字符串:

Sub Loop_Test2() 

Dim i As Long 
Dim j As Long 
Dim CountAll As Long 
Dim CountXL As Long 
Dim CustomerName As String 

ActiveSheet.Range("A1").Activate 

CountAll = ActiveSheet.Range("A35") 

For j = 1 To CountAll 
i = 2 

CountXL = Cells(i, j).Value 

For i = 1 To CountXL 
CustomerName = Cells(1, j).Value 
'MsgBox CustomerName 
Cells(i + 2, j).FormulaArray = "=IFERROR(INDEX(Sheet2!$A:$B,SMALL(IF(Sheet2!$A:$A=CustomerName,ROW(Sheet2!$A:$A)),ROW(1:1))*1,2),0)" 
Next i 

Next j 

End Sub 

沒有錯誤;不過,我需要這部分固定,因此公式中的引用值而不是實際的一句話:
IF(Sheet2的$ A:$ A =客戶名稱

回答

1

在你的情況,下面用:

Cells(i + 2, j).FormulaArray = "=IFERROR(INDEX(Sheet2!$A:$B,SMALL(IF(Sheet2!$A:$A=""" & CustomerName & """,ROW(Sheet2!$A:$A)),ROW(1:1))*1,2),0)" 

在一般情況下,如果你需要Concat的字符串中使用"formula_par21""" & value & """formula_part2,如果它的數字 - 沒有雙引號,像"formula_par21" & value & "formula_part2

「」在VBA =「字符串變量

+0

非常感謝你的工作。但我現在有另一個錯誤。 ROW(1:1)的部分應該每次增加ROW(2,2)等等。任何想法如何解決這個問題?我 – Nadz

+0

我試圖使用這樣的:對於j = 1至CountAll I = 2 CountXL =細胞(I,J)。價值 R = 1 對於i = 1到CountXL 客戶名稱=細胞(1,j)的。值 'MsgBox CustomerName MsgBox R Cells(i + 2,j).FormulaArray =「= IFERROR(INDEX(Sheet2!$ A:$ B,SMALL(IF(Sheet2! CustomerName&「」「,ROW(Sheet2!$ A:$ A)),ROW(」&R&「:」&R&「))* 1,2),0)」 R = R + 1 Next i Next j – Nadz

+0

它會工作,但更好地使用'我'而不是'R'? – brz

1
Cells(i + 2, j).FormulaArray = "=IFERROR(INDEX(Sheet2!$A:$B,SMALL(IF(Sheet2!$A:$A=""""" & CustomerName & """"",ROW(Sheet2!$A:$A)),ROW(1:1))*1,2),0)" 

你得雙倍 「」 在VBA公式 - > 「」= 「」 「」

舉個簡單的例子,爲什麼你可能得到錯誤:

Excel公式:

=If(A1<>"";A1;B1) 

VBA式

"=IF(A1<>"""",A1,B1)" 

所以我をuld建議你試試這個:

Cells(i + 2, j).FormulaArray = "=IFERROR(INDEX(Sheet2!$A:$B,SMALL(IF(Sheet2!$A:$A=""""" & CustomerName & """"",ROW(Sheet2!$A:$A)),ROW(1:1))*1,2),0)"