В моем коде есть порядок поиска, и он выглядит следующим образом:
Он принимает каждое значение (около 2000 диапазонов) в диапазоне ws.sheet A и ищет его на другом листе с именем wp.sheet range A (около 90 диапазонов). Если конкретное значение x в диапазоне ws.sheet, например, A3, не найдено в диапазоне wp.sheet A, следующим порядком поиска в листе ws.sheet будет значение y в следующем диапазоне B3 (в той же строке, что и значение x), в котором нужно искать в лист wp.sheet во всем диапазоне B и так далее.
Это то, что делает мой цикл for, и проблема с моим кодом состоит в том, что он занимает очень много времени, поскольку он сравнивает каждое значение в диапазоне ws.sheet A1-2000 со значениями в диапазоне wp.sheet A1-90. Есть ли альтернатива, которая делает это быстрее или эффективнее?
Dim wb As Workbook, wq As Object
Dim ws, wi As Worksheet, datDatum
Dim w As Long, I As Long, t As Long
Dim DefaultMsgBox()
Dim r, i As Integer
For r = 2 To 2000
Check = True:
For i = 1 To 90
If ws.Range("A" & r).Value = wp.Sheets("ABC").Range("A" & i).Value Then
wp.Sheets("ABC").Rows(i).Columns("E:AB").Copy
ws.Range("G" & r).PasteSpecial
GoTo NextR
End If
Next i
For i = 1 To 90
If ws.Range("B" & r).Value = wp.Sheets("ABC").Range("B" & i).Value Then
wp.Sheets("ABC").Rows(i).Columns("E:AB").Copy
ws.Range("G" & r).PasteSpecial
GoTo NextR
End If
Next i
For i = 1 To 90
If ws.Range("C" & r).Value = wp.Sheets("ABC").Range("C" & i).Value And ws.Range("D" & r).Value = wp.Sheets("ABC").Range("D" & i).Value Then
wp.Sheets("ABC").Rows(i).Columns("E:AB").Copy
ws.Range("G" & r).PasteSpecial
GoTo NextR
End If
Next i
NextR:
If Not Check = ws.Range("A" & r).Value = wp.Sheets("ABC").Range("A" & i).Value Or Not Check = ws.Range("B" & r).Value = wp.Sheets("ABC").Range("A" & i).Value Or Not Check = ws.Range("C" & r).Value = wp.Sheets("ABC").Range("C" & i).Value And ws.Range("D" & r).Value = wp.Sheets("ABC").Range("D" & i).Value Then
MsgBox "......"
End If
Next r
End sub