VBA 循环数组并重置

VBA Loop an array and reset

我想检查我的数据是否在一个数组中,如果是,它应该将它写入一个新的单元格。

我的问题:

如果两个条目相同并且相互跟随,我的 if 语句将不会在 for 循环中找到它,因为我的循环没有重置。

我该如何解决这个问题?

Sub Tester()

    Dim ArtikelZgm As Variant
    ArtikelZgm = Worksheets("Artikel").Range("A1").CurrentRegion
    Dim a As Long
    For a = LBound(ArtikelZgm, 1) To UBound(ArtikelZgm, 1)
        For b = 2 To 100
            If ArtikelZgm(a, 3) = Worksheets("Bestellung Lidl").Cells(b, "F").Value Then

                Worksheets("Bestellung Lidl").Cells(b, "H").Value = ArtikelZgm(a, 1)
                Worksheets("Bestellung Lidl").Cells(b, "I").Value = ArtikelZgm(a, 5)
                b = b + 1

            End If
        Next b
    Next a

End Sub

我会使用 Match 而不是嵌套循环:

Sub Tester()

    Dim ArtikelZgm As Variant, m
    Dim b As Long, wsBL As Worksheet, wsA As Worksheet
    
    Set wsA = Worksheets("Artikel")
    Set wsBL = Worksheets("Bestellung Lidl")
    
    ArtikelZgm = wsA.Range("A1").CurrentRegion.Value
    
    For b = 2 To 100
        'using Match is faster than a nested loop
        m = Application.Match(wsBL.Cells(b, "F").Value, wsA.Columns("C"), 0)
        If Not IsError(m) Then 'got a match if `m` is not an error value
            wsBL.Cells(b, "H").Value = ArtikelZgm(m, 1)
            wsBL.Cells(b, "I").Value = ArtikelZgm(m, 5)
        End If
    Next b
End Sub