Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

Vergleiche Tabellen zeilenweise

Vergleiche Tabellen zeilenweise
28.04.2014 12:48:42
Anke
Liebe Excel-Götter, ich hoffe ich finde hier Hilfe!
Ich habe 2 Tabellenblätter, "NEW" und "PREVIOUS". NEW enthält einen Report den ich aus einem System ziehe. Dieser wird regelmäßig kommentiert von unterschiedlichen Personen (und das kann leider nicht im System selbst erfolgen).
Mein Problem:
Der Report muss regelmäßig abgeglichen werden, dh die Kommentare zu den Einträgen hinzu gefügt werden. Da ich in Spalte C einen eindeutigen, einmaligen Bezug habe (Identifier) kann ich relativ einfach die Kommentare über eine Formel anfügen - das bekomme ich gerade noch eben hin (siehe Beispieldatei mit Macro).
Mein Problem ist, dass mit dieser Variante die Formate der Kommentarspalten flöten gehen. Auch hätte ich es gerne, dass Änderungen einzelner Kommentare in gelb hervor gehoben werden (und dazu bin ich zu doof).
Also, idealerweise würde mein "Traum-Makro" folgendes tun:
Nehme Zelle C2 des "NEW" Tabs und schaue, ob sich der Wert in der Spalte C auf dem "Previous" Tab befindet. Falls ja, vergleiche ob die Zellen rechts daneben identisch sind (bis Spalte S). Falls nein, markiere die entsprechende Zelle in gelb. Kopiere anschließend die Kommentare der Zellen T-W aus dem "Previous" tab in die entsprechenden Zellen des "NEW" tabs.
Falls der Wert aus der Zelle C2 nicht gefunden werden kann, trage "NEW" in die Zelle T ein und markiere sie gelb.
Wenn dieses Makro dann noch prüfen würde ob auch alle Einträge des "Previous" tabs immer noch auf dem "NEW" tab vorhanden sind, und für die nicht mehr vorhandenen Einträge "Deleted" in der Spalte A eintragen könnte, wäre das perfekt.
ich weiß das ist ganz schön viel verlangt - ich hoffe daher auf jemanden der gerne an sowas komplexem bastelt :o(
1000 Dank vorab,
Anke
https://www.herber.de/bbs/user/90370.xlsm

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleiche Tabellen zeilenweise
28.04.2014 15:29:17
fcs
Hallo Anke,
ich hab mal meinen Fundus durchstöbert und ein passendes Makro an deine Tabellen angepasst.
Gruß
Franz
Sub TabellenVergleich()
Dim wksNEW As Worksheet, wksPREV As Worksheet
Dim lngZ1 As Long, lngZ2 As Long
Dim rngZelle2 As Range
Dim varCode, intI As Integer
Const lngSpCode = 3 'Spalte mit den Identifiern
Const lngTitel = 1 'Zeile mit Spaltentiteln (0 setzen, wenn keine Spaltentitel)
Set wksNEW = Worksheets("NEW")
Set wksPREV = Worksheets("PREVIOUS")
'Spaltentitel für Kommentare kopieren aus Spalten T:W (20 bis 23)
With wksPREV
.Range(.Cells(lngTitel, 20), .Cells(lngTitel, 23)).Copy
End With
With wksNEW
With .Range(.Cells(lngTitel, 20), .Cells(lngTitel, 23))
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteAll
End With
End With
'Daten in NEW bei identischem Code in PREVIOUS vergleichen in Spalten D bis S
With wksNEW
For lngZ1 = lngTitel + 1 To .Cells(.Rows.Count, lngSpCode).End(xlUp).Row
varCode = .Cells(lngZ1, lngSpCode).Value
'Identifier in PREVIOUS suchen
Set rngZelle2 = wksPREV.Columns(lngSpCode).Find(What:=varCode, LookIn:=xlValues, _
lookat:=xlWhole)
If Not rngZelle2 Is Nothing Then
lngZ2 = rngZelle2.Row 'Zeile des gefundenen Identifiers
For intI = 4 To 19 'Spalten D bis S
'Vergleich der Werte zwischen Tabellen
If .Cells(lngZ1, intI).Value  _
wksPREV.Cells(lngZ2, intI).Value Then
'Zelle kennzeichen
.Cells(lngZ1, intI).Interior.Color = 65535 'gelb
End If
Next
'Altkommentare kopieren aus Spalten 20 bis 23
With wksPREV
.Range(.Cells(lngZ2, 20), .Cells(lngZ2, 23)).Copy wksNEW.Cells(lngZ1, 20)
End With
Else
.Cells(lngZ1, 20).Value = "NEW"
End If
Next
End With
'In NEW nicht mehr vorhandenen Einträge in PREVIOUS in Spalte A markieren
With wksPREV
For lngZ2 = lngTitel + 1 To .Cells(.Rows.Count, lngSpCode).End(xlUp).Row
varCode = .Cells(lngZ2, lngSpCode).Value
'Identifier in NEW suchen
Set rngZelle2 = wksNEW.Columns(lngSpCode).Find(What:=varCode, LookIn:=xlValues, _
lookat:=xlWhole)
If rngZelle2 Is Nothing Then 'Zeile in NEW nicht mehr vorhanden
'Datenzeile kennzeichnen
.Cells(lngZ2, 1).Value = "Deleted"
End If
Next
End With
Set wksNEW = Nothing:   Set wksPREV = Nothing: Set rngZelle2 = Nothing
End Sub

Anzeige
AW: Vergleiche Tabellen zeilenweise
28.04.2014 15:54:11
Anke
Unglaublich!!!!
es tut EXAKT das was ich brauche!!! Das wird mir künftig STUNDEN an Zeit einsparen,
1000 Dank!
Anke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige