VBA - 如何在Array中引用列名?

时间:2018-03-14 21:19:25

标签: vba excel-vba word-vba excel

首先,我有一个从网页上抓取表格的抓取功能,并将数据存储在2D数组中。

2D数组从第0行开始到页面上有很多行数据,而第1列却有很多列。

第0行只包含所有列名。

我的ReDim:

ReDim Addresses(0 To lngTotalRecords, 1 To columns.Count) As String

然后我将这个2D数组存储到一个名为dictClients的脚本字典中,因为有多个客户端在网页上都有自己的同一个表项。

因此,在我的字典中,我有类似以下的内容来引用特定客户端的特定地址表:

dictClients(1)("Addresses")
dictClients(2)("Addresses")

我现在希望能够检查某行中的单元格是否包含特定值,但是网页允许重新组织列以便:

dictClients(1)("Addresses")(1,1) 'row 1 column 1

并不总是引用"街道号码"柱。例如,街道号列可以是其他人的列表:

dictClients(1)("Addresses")(1,3) ' row 1 column 3

鉴于这些细胞:

dictClients(1)("Addresses")(0,1) '(0,2) (0,3) etc.

都是指列的名称,我找到特定命名列位置的最佳方法是什么?

示例:我想获取第1行中邮政编码单元格的值,所以我需要查看 dictClients(1)("Addresses")(1, POSTALCODECOLUMN), 它并不总是在网页上的相同位置。

我正在考虑使用以下功能:

Public Function column(strArr() As String, strColumnName As String)
Dim i As Long
For i = 1 To UBound(strArr, 2)
If strArr(0, i) = strColumnName Then column = i
Next
End Function

但它只是感觉如此冗长,称之为:

strPostalCode = 
dictClients(1)("Addresses")(1,column(dictClients(1)("Addresses"), "Postal Code")

有更好更简单的方法吗?

感谢。

0 个答案:

没有答案