Лучший способ найти совпадения в листе по сравнению со списком VBA

Я в основном хочу узнать, как лучше всего сравнить элементы на листе со списком, в основном, элементы в списке должны быть найдены на листе, если они не найдены, они должны перейти к нижней части листа на следующий свободный ряд,

Это не должно быть слишком сложно, но я попытался использовать оператор if и if, но обнаружил, что ему необходимо выполнить поиск по всем строкам на листе по всем строкам в списке, что иногда делает его медленным, трудоемким и не отвечающим,

Я думал об использовании метода.find, но не хотел тратить свое время,

Обновление кода:

`

          For i = 0 To Me.ListBox1.ListCount - 1

            field1 = Me.ListBox1.List(i)
            field2 = Me.ListBox1.List(i, 1)
            field3 = Me.ListBox1.List(i, 2)


            field2ammend = Right(field2, Len(field2) - 7)


    For Each rCell In rRng.Cells






        If rCell.Value = field1 Then

            comp = field3
            name = field2ammend

            Sheets("Hair").Range("E" & rCell.Row) = comp
            Sheets("Hair").Range("F" & rCell.Row) = name

            Range("A" & rCell.Row & ":H" & rCell.Row).Interior.ColorIndex = 24

            countgood = countgood + 1




        Else




            ListBox2.AddItem (field2)

            'bal = bal + 1
            'Sheets("Hair").Range("B" & lastrows) = field1
            'Sheets("Hair").Range("E" & lastrows) = comp
            'Sheets("Hair").Range("F" & lastrows) = name
            'Range("A" & lastrows & ":H" & lastrows).Interior.ColorIndex = 24
            'lastrows = lastrows + 1
            'countbad = countbad + 1
        End If

Далее rCell Далее я

`

Какие-либо предложения,

Спасибо,

1 ответ

Решение

Я не знаю причину, но помогает ли это?

Sub Weiter_Click()
Dim i As Integer
Dim varTemp As Variant

    varTemp = ListBox1.List '<-- for listboxes with one column. you have to edit this to pass your code

    For i = LBound(varTemp) To UBound(varTemp)
        If Columns("A:A").Find(varTemp(i, 0)) Is Nothing Then '<--- there is the column you're looking in
            Cells(1, 1).End(xlDown).Offset(1, 0).Value = varTemp(i, 0)
        Else
            Columns("A:A").Find(varTemp(i, 0)).Interior.ColorIndex = 3 '<--- 3 is red, idk what color you want
        End If
    Next
End Sub
Другие вопросы по тегам