我有一个数组,该数组接收电子表格的单行(1行,185列)中的值。然后,我想遍历数组,以查找数组中的值与特定单元格中的值之间的匹配。
但是,每次我运行代码时,它都会说它找到了一个匹配项,但没有将值返回给单元格。
代码的相关行是:
Dim qCountry()
Worksheets("Data").Activate
qCountry = Range("A1:GC1").Value
For i = 1 To 185
If Cells(aRow, bCol) <> vbNullString Then
Exit For
ElseIf InStr(1, Cells(aRow, 4), "*" & qCountry(i) & "*") = 1 Then
Cells(aRow, bCol) = qCountry(i)
End If
Next i
我的阵列的屏幕截图:
答案 0 :(得分:2)
只需将qCountry
定义为常规Variant
变量,如下所示:
Dim qCountry as Variant
这将消除一个额外的维度,但是您仍然拥有一个多维数组。
如果要处理一维数组,可以使用Application.Transpose()
函数:
qCountry = Application.Transpose(Range("A1:GC1").Value)
但是由于您的数据在行中,因此需要执行两次:
qCountry = Application.Transpose(Application.Transpose(Range("A1:GC1").Value))
此时,您的代码将可用:
Dim qCountry
Worksheets("Data").Activate
qCountry = Application.Transpose(Application.Transpose(Range("A1:GC1").Value))
For i = 1 To 185
If Cells(aRow, bCol) <> vbNullString Then
Exit For
ElseIf InStr(1, Cells(aRow, 4), "*" & qCountry(i) & "*") = 1 Then
Cells(aRow, bCol) = qCountry(i)
End If
Next i
希望这会有所帮助。
答案 1 :(得分:1)
可以如屏幕截图所示访问值:
Cells(aRow, bCol) = qCountry(1, i)