VBA比较大小不同的阵列并构建一个新阵列

时间:2018-11-30 22:03:45

标签: arrays vba compare

我有一个由字符串列表框生成的一维数组,我想将其与主2D数组匹配,其中第一列为字符串,而所有其他均为数字。目的是创建具有匹配字符串和母版中相关数据的第三个数组。尽管受案者不是未知数,但无法从此处搜索找到更好的解决方案。猜猜我在构建新阵列时迷路了。

Private Sub ImportSelection()
    Dim i, j, k, m, ListSize As Integer
    Dim arr2() As String
    Dim pArr As variant     
    Dim Size As Integer

    Size = List2.ListCount
    ReDim ListBoxContents(0 To Size) As String

    For i = 1 To Size
        ListBoxContents(i) = List2.list(i)
    Next i

    On Error GoTo eh
    ReDim arr2(1 To List2.ListCount, 1 To 16)

    For i = LBound(ListBoxContents) To UBound(ListBoxContents)
        For j = LBound(pArr, 1) To UBound(pArr, 1)
                If ListBoxContents(i) = pArr(i, 1) Then
                    arr2(k, m) = pArr(i, j)
                    k = k + 1
                    m = m + 1
                End If
            Next j
        Next i
eh:
    MsgBox Err.Description
End Sub

1 个答案:

答案 0 :(得分:0)

将代码的中间部分更改为->

k = 0  ' need to initialize (and also add headings to row zero)
For i = LBound(ListBoxContents) To UBound(ListBoxContents)
    For j = LBound(pArr, 1) To UBound(pArr, 1)
            If ListBoxContents(i) = pArr(J, 1) Then  ' pArr needs to be J
                k = k + 1   ' got a match, ergo increment the output row
                For m = 0 To UBound(pArr, 2) - 1
                    arr2(k, m) = pArr(J, m)  ' move into col m, from pArr J row
                Next m                
            End If
    Next j
Next i
Exit Sub  ' do not drop thru

也像Comintern sez-> pArr从未分配任何值。

另外,您能从

获得所需的东西吗?
Dim i, j, k, m, ListSize As Integer
相关问题