Лучший способ найти совпадения в листе по сравнению со списком 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