2017-03-07 26 views
1

Derzeit haben Sie ein Excel-Dokument mit einem Modul verbunden mit einer Schaltfläche.Scannen und Vergleichen von zwei Zeilen

Excel-Dokument ähnelt die folgenden:

ROW | COLUMN C | COLUMN K 
1  808   253 
2  808   256 
3  908   355 
4  908   355 
5  908   356 
6  907   253 
7  907   253 

Als ich startet das folgende Modul klicken Sie auf die Schaltfläche:

Sub scan() 
    Dim dataRange As Range 
    Dim dataRange2 As Range 
    Dim oneCell As Range 
    Dim oneCell2 As Range 

    With ThisWorkbook.Sheets("Resource Info").Range("C:C") 
     Set dataRange = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) 
    End With 

    With ThisWorkbook.Sheets("Resource Info").Range("K:K") 
     Set dataRange2 = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) 
    End With 

    For Each oneCell In dataRange 
     If Application.WorksheetFunction.CountIf(dataRange, oneCell) > 1 Then 
      For Each oneCell2 In dataRange2 
       If Application.WorksheetFunction.CountIf(dataRange, oneCell) > 1 And Application.WorksheetFunction.CountIf(dataRange2, oneCell2) <> 1 Then 
        With oneCell 
         .EntireRow.Interior.ColorIndex = 6 
        End With 
       End If 
      Next oneCell2 
     End If 
    Next oneCell 
End Sub 

Ich versuche nur 1,2,3 zu haben Reihe, 4,5 werden seit der Übereinstimmung von Spalte C hervorgehoben, aber Spalte K-Daten stimmen nicht mit der Gruppierung von Spalte C überein.

Das aktuelle Modul Ich habe markiert alle Zeilen, egal was in Spalte K.

+2

(kurze Notiz, müssen Sie auch .' die 'hinzuzufügen, bevor die Verwendung von' Range() 'im' With' Aussagen) – BruceWayne

+1

Könnten Sie die Kriterien der Gruppierung näher erläutern? Anstelle von Makros können Sie wahrscheinlich auch [bedingte Formatierung] (http://www.excel-easy.com/data-analysis/conditional-formatting.html) oder [sumproduct] (https: // exceljet) verwenden. net/excel-functions/excel-sumproduct-function) – Alex

+0

Gruppierung sollte in Spalte C erfolgen. In dieser Gruppe (dh übereinstimmende Zahlen), wenn Spalte K zwei verschiedene Werte enthält, sollten Zeilen aus dieser Gruppe hervorgehoben werden. Hoffe, das ist besser erklärt. – Alex

Antwort

2

Ersetzen Sie mehr Application.CountIf Funktionen mit einer einzigen Appl;ication.CountIfs enthalten ist.

Sub scan() 
    Dim rw As Long 

    With ThisWorkbook.Sheets("Resource Info") 
     .UsedRange.offset(1, 0).EntireRow.Interior.Pattern = xlNone 
     For rw = 2 To .Cells(.Rows.Count, "C").End(xlUp).Row 
      If CBool(Application.CountIfs(.Columns("C"), .Cells(rw, "C").Value2, .Columns("K"), "<>" & .Cells(rw, "K"))) Then 
       .Rows(rw).EntireRow.Interior.ColorIndex = 6 
      End If 
     Next rw 
    End With 

End Sub 

enter image description here

+0

Danke @jeeped - obwohl, als ich den obigen Code ausgeführt habe, verschwanden alle Headerfarben und keine Zeilen wurden markiert. – Alex

+1

Probieren Sie es erneut mit Ihren Beispieldaten (ich habe und es hat gut funktioniert). Wenn Sie erfolgreich sind, müssen Sie bestimmen, was der Unterschied zwischen Ihren Daten und den von Ihnen bereitgestellten Beispieldaten ist. Sie haben nie eine farbige Kopfzeile erwähnt. Ich habe den obigen Code ausgeglichen, um die oberste Zeile beim Zurücksetzen der Hervorhebung alleine zu lassen. – Jeeped

+0

Sie haben Recht. Es wirkt wie ein Zauber. Schätzen Sie Ihr Fachwissen. Ich bin jetzt unterwegs, um etwas über den Unterschied zwischen CountIf und CountIfs zu erfahren. Danke noch einmal! – Alex

Verwandte Themen