2016-07-12 8 views
0

I Automatisierung 2, auf passende Daten Form Reihe Data1 auf Daten tätenExcel vlookup, um alle Details der Vorkommniszelle zu erhalten?

ich durch Schleifen-Anweisung aber das Problem getan wurde, ist viel Zeit in Anspruch nehmen, wenn die Anzahl der Zeile Aus diesem Grunde

erhöht i durch tun gehobelt vlookup, In vlookup gibt nur die erste Vorkommniszelle zurück, aber ich muss alle Übereinstimmungszellen und hervorgehobene übereinstimmende Zeilen finden, die ich in der Abbildung zeige.

enter image description here

Antwort

0

Arbeiten mit Zellen reduziert direkt den Code Leistung. Versuchen Sie, Data1 und Data2 auf Arrays zu setzen und mit Arrays zu arbeiten.

Etwas wie folgt aus:

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

Hoffe, Sie sind für dieses

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

In dieser Methode dauert es mehr Zeit, für jedes Formular Daten1 zu jedem in Daten 2. –

0

Suche ich nicht den Punkt sehen, warum sollte es für viele Zeilen langsam sein, Es wäre gut, mehr Informationen darüber zu haben.

Ich würde es wie die anderen tun, dauert ~ 1 Sekunde mit 100000 Vergleiche.

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 
Verwandte Themen