在Excel VBA中引用公式数组中的字符串

时间:2015-07-01 07:29:08

标签: excel vba excel-vba loops

需要一些帮助引用索引公式数组

中的字符串

我的代码如下:

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(Sheet 2中$ A:$ A =客户名称

2 个答案:

答案 0 :(得分: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)"

一般情况下,如果你需要使用联合字符串"formula_par21""" & value & """formula_part2,如果它的号码是 - 没有双引号,如"formula_par21" & value & "formula_part2

<强>&#34;&#34;在VBA =&#34;在字符串变量中

答案 1 :(得分: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中的公式加倍 - >&gt; “”=“”“”

以下是您可能会收到错误的简单示例:

Excel公式:

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

VBA公式

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

所以我建议你试试这个:

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