Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

zwei Tabellen vergleichen - Unterschiede markieren

zwei Tabellen vergleichen - Unterschiede markieren
29.01.2020 11:32:48
Stefan
Hallo!
Ich habe ein VBA-Problem:
Meine Aufgabenstellung ist es die Datensätze zweier Arbeitsblätter miteinander zu vergleichen und sich unterscheidende Zellen farblich zu markieren. Außerdem soll eine Zeile mit sich unterscheidenden Daten in der letzten Spalte mit "ja" markiert werden. (Zusatzaufgabe: Zeilen ohne Änderung sollen ein "nein" erhalten.)
Dr. Google hat mich auf einen gut funktionierenden Code gebracht (siehe unten).
Dieser hat allerdings das Problem, dass die zu vergleichenden Datensätze wohl auf beiden Arbeitsblättern in derselben Zeile stehen müssen. Dies ist nun nicht immer der Fall. Deshalb ist das Codeergebnis falsch.
Mein Datenbestand ist so aufgebaut, dass die Spalte A einen eineindeutigen Schlüssel enthält. Diesen Schlüssel würde ich gerne benutzen, um die zu vergleichende Zeile zu ermitteln. Ich schaffe es leider nicht den Code dahingehend zu erweitern, dass die Vergleichsoperation über diesen Schlüsselwert die zu vergleichende Zeile sucht.
Könnt ihr mir dabei bitte helfen?!
Danke.
Hier der derzeitige Code:
-----------------
[code]
' Veränderungen zum Vorbestand markieren
sheetZuletzt = ThisWorkbook.Sheets("Stammdaten").Range("B2").Value
letzteSpalte = ThisWorkbook.Sheets(sheetJetzt).Range("A1").End(xlToRight).Column + 1
i = 0
With ThisWorkbook.Sheets(sheetJetzt)
lngLetzeS = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lngLetzeZ = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
arrT1 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
With ThisWorkbook.Sheets(sheetZuletzt)
arrT2 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
End With
For i = 1 To lngLetzeZ
For j = 1 To lngLetzeS
'ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "nein"
If arrT1(i, j) arrT2(i, j) Then
ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "ja"
If Not rngBereich Is Nothing Then
Set rngBereich = Union(rngBereich, .Cells(i, j))
Else:
Set rngBereich = .Cells(i, j)
End If
End If
Next
Next
.Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS)).Interior.ColorIndex = xlColorIndexNone
If Not rngBereich Is Nothing Then rngBereich.Interior.ColorIndex = 6
End With
[/code]
-----------------
Liebe Grüße,
Stefan

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zwei Tabellen vergleichen - Unterschiede markieren
29.01.2020 18:30:00
Piet
Hallo Stefan
ich kann dir auf die schnelle eine Erweiterung für deinen Code anbieten, habe aber keine Zeit alles umzuschreiben. Um Dir die Arbeit zu erleichtern kann man die Tabelle Stammdaten mit Set definieren!
Du brauchst drei neue Variable für Suchtext, die Find Methode und zr für die gefundene Zeile. Dann kannst du in der For i Schleife zuerst nach der Ident Nummer in Spalte A suchen, und startest dann die For i Schleife erst wenn die ID-Nr. gefunden wurde. Bei der For i Schleife must du aber "zr" als Bezugszeile nehmen, nicht Cells(i), sondern Cells(zr, xxx)!
mfg Piet
Sub test()
Dim SuchTxt As Variant, zr as long
Dim STD As Worksheet, rFind as Range
Set STD = ThisWorkbook.Sheets("Stammdaten")
For i = 1 To lngLetzeZ
SuchTxt = STD.Cells(i, 1).Value
Set rfind = .Columns(1).Find(What:=SuchTxt, After:=.Range("A1"), LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False)
If rfind Is Nothing Then MsgBox SuchTxt & "  Nicht gefunden"
If Not rfind Is Nothing Then
zr = rfind.Row  'gefundene Zeile in Tabelle xx
'hier jetxt dein Programm mit For j = xxx
End If
End Sub

Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige