2016-07-12 5 views
0

Я делаю автоматизации на соответствие данных формы строки Data1 к данным 2,Excel vlookup, чтобы получить все данные ячейки ячейки?

Я сделал обернув заявление, но проблема занимает много времени, когда количество подряд увеличить

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

enter image description here

ответ

0

Работа с ячейками напрямую снижает производительность кода. Попробуйте установить Data1 и Data2 в массивы и работать с массивами.

Что-то вроде этого:

With ActiveSheet 
    arr = .Range(.[A2], .Cells(.Rows.Count, "A").End(xlUp)).Value 
    arr2 = .Range(.[D2], .Cells(.Rows.Count, "D").End(xlUp)).Value 

    For i& = 1 To UBound(arr) 
     For j& = 1 To UBound(arr2) 
      If arr(i, 1) = arr2(j) Then 
       ... 
      End If 
     Next j 
    Next i 
End With 
0

Надеется, что вы ищете для этого

Sub testvlookup() 
    Dim lastrow, lastrowdata, incre, i, j As Long 
    lastrow = Range("A" & Rows.Count).End(xlUp).Row 
    lastrowdata = Range("D" & Rows.Count).End(xlUp).Row 
    incre = 6 
    For i = 2 To lastrow 
     For j = 2 To lastrowdata 
      If Range("A" & i).Value = Range("D" & j).Value Then 
       Range("D" & j, "G" & j).Interior.ColorIndex = incre 
      End If 
     Next j 
     incre = incre + 1 
    Next i 
End Sub 

enter image description here

+0

В этом методе требуется больше времени для каждой формы data1 для каждого в данных 2. –

0

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

Я бы сделал это, как и остальные, занимает ~ 1 с 100000 сравнений.

Dim i As Integer 
Dim b As Integer 

i = 1 

While i < 20000 
Range("A1:A5").Copy Range(Cells(i, 4), Cells(i + 5, 4)) 
i = i + 5 
Wend 

MsgBox ("hi") 
i = 1 
While i < 7 
    b = 3 
While b < 20000 
    If Cells(i, 1).Value = Cells(b, 4).Value Then 
     Cells(b, 4).Interior.ColorIndex = i 
    End If 
b = b + 1 
Wend 
i = i + 1 
Wend 
End Sub 
Смежные вопросы