Rubrik: Word | VB-Versionen: VBA | 27.02.15 |
Aus einer Word-Tabelle anhand einer 'Ident'-Spalte doppelte Zeilen entfernen Im Tipp wird eine Prozedur vermittelt, die alle doppelten Zeilen anhand einer Spalte mit Key-Werten aus der Tabelle entfernt. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 6.248 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Wenn man das Problem hat, aus einer eventuell sehr großen Tabelle Zeilen entfernen zu müssen, die gemäß von Key-Werten in einer Spalte identifiziert werden können, kann dies mit der im folgenden gezeigten Prozedur erreicht werden.
Voraussetzung ist, dass die Tabelle nach der Spalte mit den Key-Werten sortiert sein muss.
Die Prozedur:
' Alle Zeilen, die doppelte Einträge in einer 'Ident'-Spalte enthalten, löschen ' tb.. die Word-Tabelle ' sp.. die Spalte (sortiert!) mit den Vergleichswerten ' anfZ.. die Zeile, mit der begonnen werden soll (...Überschrift) Sub DistinctTable(tb As table, sp As Integer, Optional anfZ As Integer = 1) Dim i As Long Dim anzRows As Long Dim lastValue As String Dim actValue As String anzRows = tb.Rows.Count ' Anzahl der Tabellenzeilen lastValue = "" i = anfZ Do While i < anzRows actValue = tb.Rows(i).Cells(sp).Range.text ' einkürzen eventuell nötig wegen Tabellenzellen-Notation actValue = Left(actValue, Len(actValue) - 2) If lastValue = "" Or lastValue <> aktValue Then lastValue = actValue ' Vergleichswert hat sich geändert i = i + 1 Else tb.Rows(i).Delete ' löschen einer 'Duplikat'-Zeile anzRows = anzRows - 1 End If DoEvents Loop End Sub
Zum Testen:
Sub testDistinct() DistinctTable ActiveDocument.Tables(1), 1 End Sub