Hallo Leute,
ich habe mir eine Excel-VBA-Abfrage erstellt mit deren Hilfe Word-Formulare ausgelesen (XML-Verknüpfung) und in eine Excel-Tabelle geschrieben werden. Die Formulare haben verschiedene Revisionen, sodass ich eingestellt habe, dass doppelte oder mehrfach vorkommende Zeilen/Datensätze entfernt werden (das aktuellste Änderungsdatum bleibt stehen) - doppelte Datensätze sind dann vorhanden, wenn der "Projektname" [Spalte A] identisch ist.
Mein Ziel:
Bevor die doppelten Datensätze gelöscht werden, soll ein Vergleich zwischen dem aktuellsten und dem zweit-aktuellsten Änderungsdatum durchgeführt werden - die Zeilen stehen Dank der Sortierung direkt untereinander, dabei soll jede Spalte durchlaufen werden und die Werte direkt und einzeln miteinander verglichen werden. Markiert werden sollen die Zellen, die NICHT identisch sind (z.B. Hintergrundfarbe gelb)
Nice-to-have: Wäre es auch noch möglich den alten Wert als Kommentar in die Zelle mit dem neuen Wert einzufügen?
CODE (bisher inkl. einiger Überlegungen)
Date0 = FileDateTime(File)
Lo.ListRows(Lo.ListRows.Count).Range(1, 3) = Date0
...
'SORTIERUNG: PROJEKTNAME
Lo.Sort.SortFields.Add Key:=Range("A5"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With Lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'SORTIERUNG: Chronologisch, absteigend
Lo.Sort.SortFields.Add Key:=Range("C5"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With Lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Zeilen-/Spaltenunterschiede markieren
'Range("COLLATION").Select
'Selection.ColumnDifferences(ActiveCell).Select
'Selection.RowDifferences(ActiveCell).Select
'Duplikate entfernen - die alten Dokumente werden entfernt _
(Dank der Sortierung nach Änderungsdatum der Datei, bei gleichem Projektnamen)
'ws.Range("COLLATION[Project name]").RemoveDuplicates Columns:=1, Header:=xlYes
'SORTIERUNG: Löschen
Lo.Sort.SortFields.Clear
'SORTIERUNG: Chronologisch, absteigend
Lo.Sort.SortFields.Add Key:=Range("C5"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With Lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Vielen Dank im Voraus!
Gruß
DAEMAN
|