AW: Adresse splitten
12.07.2018 23:40:29
Rob
Ich habe den Code noch dynamisch angepasst, allerdings schreibt er wirklich jeden einzelnen String in eine separate Zelle. Ganz ehrlich; wenn das ne einmalige Geschichte ist, dann würde ich anschließend das Ergebnis manuell anpassen: Zusatzspalten einfügen, Daten/Filtern und dann Zellen für den gefilterten Bereich in den Zusatzspalten zusammenfügen.
Sub SplitAddressTable()
Dim r As Range
Dim i As Integer
Dim LastRow, Counter As Long
With Tabelle1
.Range("A1").Activate
Do While ActiveCell ""
'Pro Zeile Strings aufsplitten
Range(ActiveCell, ActiveCell.End(xlDown)).TextToColumns _
Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array( _
6, 1) _
), _
TrailingMinusNumbers:=True
ActiveCell.Offset(4, 0).Activate
Loop
'nach dem Nachnamen fortlaufend in die erste Zeile schreiben
LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
Counter = 1
Dim Zeile2, Zeile3 As Integer
Zeile2 = 2
Zeile3 = 3
Do Until Counter = LastRow
.Cells(Zeile2 - 1, 3).Activate
For i = Zeile2 To Zeile3 'Zeile 2 und 3 der Adresstabelle
For Each r In .Range("A" & i, .Range("A" & i).End(xlToRight))
ActiveCell = r
ActiveCell.Offset(0, 1).Activate
Next r
Next i
.Cells(Zeile2, 1).EntireRow.ClearContents
.Cells(Zeile3, 1).EntireRow.ClearContents
Zeile2 = Zeile2 + 4
Zeile3 = Zeile3 + 4
Counter = Counter + 3
Loop
'Leeren Zeilen löschen
.UsedRange.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub