比较数组条目

问题描述 投票:0回答:1

我需要比较数组条目。我有两个数组,其字符串为 file1.csv. 这些数组中充满了几乎相同的但未排序的字符串。

arrayA = {file1.csv, file2.csv, file3.csv ...}
arrayB = {file1.csv, file3.csv, fileABC.csv ...}

我的方法是对这些数组进行循环,然后比较这些条目,比如

For i = LBound(arrayA) To UBound(arrayA)
    For j = LBound(arrayB) To UBound(arrayB)
        If arrayA(j) <> arrayB(i) Then
            ' call func
            i = i + 1
        Else
            j = j + 1
        End If

思路很简单,取一个变量 j 并保持第二个 i. 循环浏览两个列表,只有当缺少一个条目时,才调用一个函数。问题是这样的。我的条件对未排序的列表不起作用。因为 arrayA(2) 等于 arrayB(1) 但它会触发 不平等 条件瞬间后一个caparision不等。但是,这必须先通过完整的数组,然后才决定是否缺少一个条目。

arrays excel vba string-comparison
1个回答
0
投票

不知道你是想只循环ArrayA还是两个都循环,但如果只循环A,那就试试。

Sub Test()

Dim x As Long
Dim arrayA As Variant: arrayA = Array("file1.csv", "file2.csv", "file3.csv")
Dim arrayB As Variant: arrayB = Array("file1.csv", "file3.csv", "fileABC.csv")

For x = LBound(arrayA) To UBound(arrayA)
    If IsError(Application.Match(arrayA(x), arrayB, 0)) Then
        Debug.Print arrayA(x) & " Not Found"
    End If
Next

End Sub

如果你想两个都循环,那就试试。

Sub Test()

Dim x As Long, y As Long, z As Long
Dim arrayA As Variant: arrayA = Array("file1.csv", "file2.csv", "file3.csv")
Dim arrayB As Variant: arrayB = Array("file1.csv", "file3.csv", "fileABC.csv")
Dim arrayC As Variant: arrayC = Array(arrayA, arrayB)

For x = 0 To 1
    y = ((x + 1) Mod 2)
    For z = LBound(arrayC(x)) To UBound(arrayC(x))
        If IsError(Application.Match(arrayC(x)(z), arrayC(y), 0)) Then
            Debug.Print arrayC(x)(z) & " Not Found"
        End If
    Next
Next

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.