Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Vergleich zweier Spalten

Vergleich zweier Spalten
22.02.2017 13:47:30
Christian
Hallo Leute,
ich muss für die Arbeit 2 Spalten (auf 2 verschiedenen Sheets) in Excel vergleichen (also jeden Zelleninhalt der einen Spalte mit jedem Zelleninhalt der anderen Spalte) und wenn dieser Inhalt identisch ist, die Zeile farbig markieren.
Zudem sind manche Zellen leer. Diese sollen dann logischerweise nicht farbig markiert werden, wenn 2 leere Zellen beim Vergleichen "aufeinander treffen".
Ich habe bereits einen (notdürftigen) Code geschrieben, der aber wahrscheinlich bei der großen Anzahl der Daten nicht funktioniert.
Hat daher jemand eine bessere Idee für einen Code, der funktioniert?
Zudem habe ich als Inhalt in mehreren Zeilen den Wert Fehler 2042 entdeckt und daher die Frage, wie ich dieses Problem lösen/umgehen kann, da das Programm mir beim Debuggen eben eine Fehlermeldung ("Laufzeitfehler 13: Typen unverträglich" bringt) und in der Zeile stoppt, in der dieser Fehler steht. (mit dem aktuellen Code läuft das Programm aber nicht mal bis zu dieser Zelle, das habe ich nur bei einem früheren Code entdeckt, da ich hier einen Fehler eingebaut hatte.)
Also im Großen und Ganzen benötige ich in erster Linie einen Code, der mir die Spalten vergleicht und Zellen mit gleichem Inhalt farbig markiert.
Hoffentlich habe ich mich verständlich ausgedrückt, ansonsten gerne fragen.
Hier mein bisheriger Code:
Sub Spaltenvergleichen()
Dim zeile1 As Long
Dim zeile2 As Long
Dim spalte1 As Long
Dim spalte2 As Long
zeile1 = 2
zeile2 = 7
spalte1 = 4
spalte2 = 8
Text2 = MsgBox("Test", vbInformation, "Test")
'Tabelle1 durchlaufen und mit Tabelle2 vergleichen
Do While Sheets("NES").Cells(zeile1, spalte1).Value  "STOPMARKE"
Do While Sheets("AM").Cells(zeile2, spalte2).Value  "STOPMARKE"
'Leerzellen in Spalte NES abfangen
If Sheets("NES").Cells(zeile1, spalte1).Value = "" Then
zeile1 = zeile1 + 1
Else
If Sheets("NES").Cells(zeile1, spalte1).Value = Sheets("AM").Cells(zeile2,  _
spalte2).Value Then
'Einfärben von Zeilen in Tabelle1
Sheets("NES").Cells(zeile1, 1).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 2).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 3).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 4).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 5).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 6).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 7).Interior.Color = vbRed
Sheets("NES").Cells(zeile1, 8).Interior.Color = vbRed
'Einfärben von Zeilen in Tabelle2
Sheets("AM").Cells(zeile2, 2).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 3).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 4).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 5).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 6).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 7).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 8).Interior.Color = vbRed
Sheets("AM").Cells(zeile2, 9).Interior.Color = vbRed
End If
End If
End If
zeile2 = zeile2 + 1
Loop
Zelleninhalt = Sheets("NES").Cells(zeile1 + 1, spalte1).Value
zeile1 = zeile1 + 1
zeile2 = 7
'Fehler in Zellen abfangen
'Do While IsError(Sheets("NES").Cells(zeile1, spalte1))
'       zeile1 = zeile1 + 1
'Loop
Loop
Text3 = MsgBox("Prozess ist abgeschlossen!", vbInformation, "Info")
End Sub
Hier der Link zur Datei (ein Auszug; die richtige Datei enthält noch weitere Spalten, die aber für dieses Problem unerheblich sind.)
https://www.herber.de/bbs/user/111632.xlsx
Vielen Dank schonmal für eure Hilfe.
MfG
Christian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich zweier Spalten
22.02.2017 14:22:06
Der
Hallo,
gehe im Blatt NES auf Zelle D2 und markiere ab dort die Zellen unterhalb. Erstelle eine Regel für die bedingte Formatierung mit einer Formel zur Ermittlung. Dort fügst Du folgende Formel ein:
=ISTZAHL(VERGLEICH(NES!D2;AM!H:H;0))*(NES!D2"")

Jetzt noch das gewünschte Format für die bedingte Formatierung und es sollten alle markiert sein, die in der Tabelle AM vorkommen.
Gruß
Steuerfuzzi
Anzeige
AW: Vergleich zweier Spalten
22.02.2017 14:24:26
Anton
Hi Christian,
hab Dir mal ein Makro geschrieben:
Sub Vergleich()
Dim arr1() As Variant
Dim arr2() As Variant
Dim z As Long
Dim i As Long
Dim wksVgl1 As Worksheet
Dim wksVgl2 As Worksheet
Set wksVgl1 = ThisWorkbook.Worksheets("NES")
Set wksVgl2 = ThisWorkbook.Worksheets("AM")
With wksVgl1
arr1 = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
arr2 = wksVgl2.Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
If UBound(arr1) > UBound(arr2) Then
For z = 1 To UBound(arr1)
If IsEmpty(arr1(z, 1)) = False Then
If arr1(z, 1) = arr2(z, 1) Then
.Cells(z, 1).Interior.Color = vbRed
wksVgl2.Cells(z, 1).Interior.Color = vbRed
End If
End If
Next z
Else
For z = 1 To UBound(arr2)
If IsEmpty(arr1(z, 1)) = False Then
If arr1(z, 1) = arr2(z, 1) Then
.Cells(z, 1).Interior.Color = vbRed
wksVgl2.Cells(z, 1).Interior.Color = vbRed
End If
End If
Next z
End If
End With
End Sub
VG Anton
Anzeige
und noch eine Lösung
22.02.2017 16:37:18
Michael
Hi,
leider hatte ich die doppelten Posts nicht gesehen, sonst hätte ich mir die Arbeit gar nicht erst gemacht...
Na, egal, hier die Testdatei: https://www.herber.de/bbs/user/111668.xlsm
Schöne Grüße,
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige