2017-07-21 1 views
1

Ich habe den folgenden Code, der zwei verschiedene Blätter gleichzeitig vergleicht.Vergleichen Sie mehrere Spalten VBA EXCEL (verschachtelte Schleifen)

Dim compareRange As Range 
Dim toCompare As Range 
Dim rFound As Range 
Dim cel As Range 

Set compareRange = Worksheets("sheet2").Range("A1:A" & Lastrow3) 
Set toCompare = Worksheets("sheet3").Range("A1:A" & Lastrow4) 
Set rFound = Nothing 

For Each cel In toCompare 
    Set rFound = compareRange.Find(cel) 
    Z = compareRange.Find(cel).Row 
    If Not rFound Is Nothing Then 
     cel.EntireRow.Interior.Color = vbGreen 
     Set rFound = Nothing 
    End If 
Next cel 

dies jedoch vergleicht nur Spalte A ist, wenn ich die Spalte A die C'D und D's zur gleichen Zeit vergleichen will und nur dann, wenn alle drei Spiele passieren. Die Blätter haben doppelte Werte, deshalb muss ich 3 Artikel gleichzeitig vergleichen, aber einige Spalten sind identisch. Ich muss eine verschachtelte Schleife verwenden. Irgendeine Idee, wo ich anfangen soll?

Ich dachte, ich so etwas wie

Set compareRange = Worksheets("sheet2").Range("A1:A, C1:C, D1:D" & Lastrow3) 

tun konnte, aber anscheinend kann ich nicht

Antwort

1

Eigentlich Vergleichen Sie keine anderen zwei Spalten in Ihrem Code. Probieren Sie den folgenden Code aus.

Sub Demo() 
    Dim compareRange As Range, toCompare As Range 
    Dim lastRow1 As Long, lastRow2 As Long 
    Dim ws1 As Worksheet, ws2 As Worksheet 
    Dim i As Long, j As Long 

    Set ws1 = ThisWorkbook.Worksheets("Sheet2") 
    Set ws2 = ThisWorkbook.Worksheets("Sheet3") 
    lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row 
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row 

    Set compareRange = ws1.Range("A1:A" & lastRow1) 
    Set toCompare = ws2.Range("A1:A" & lastRow2) 

    For i = 1 To lastRow2 
     For j = 1 To lastRow1 
      If ws2.Cells(i, 1) = ws1.Cells(j, 1) And ws2.Cells(i, 3) = ws1.Cells(j, 3) And ws2.Cells(i, 4) = ws1.Cells(j, 4) Then 
       ws2.Cells(i, 1).Interior.Color = vbGreen 
       Exit For 
      End If 
     Next j 
    Next i 
End Sub 

Lassen Sie mich wissen, wenn etwas nicht klar ist.

+0

Ich bin ein wenig verwirrt vielleicht vermasselt, aber Blatt 3 hat mehr Werte als Blatt 2, also möchte ich Blatt 3 gegen Blatt 2 vergleichen und stellen Sie sicher, dass diese Elemente in Blatt 3 –

+0

@AngatvirSanghera - Das sollte wirklich kein Problem sein , erhalten Sie nicht das gewünschte Ergebnis? – Mrig

+0

@AngatvirSanghera - Die obige Lösung vergleicht jede Zeile von 'Sheet3' mit jeder Zeile in' Sheet2' und wenn drei Spalten gleich sind, wird diese Zeile hervorgehoben. – Mrig

Verwandte Themen