Hallo zusammen,
die Aufgabe fand ich auch sehr Interessant.
Auf die Formellösung von LCohen wäre ich auch nicht so schnell gekommen, vielleicht in ein paar Monaten.
Dafür habe ich eine VBA Lösung, die etwas genauer arbeitet und aufteilt.
Vorgegeben sind zwei Tabellen.
Tabelle1 mit der WEB-Liste. Der erste Name bzw. die erste Firmenbezeichnung taucht in
Zeile 3 auf.
Da der Inhalt der Spalte 3 nicht berücksichtigt wird, nutze ich dies als Hilfsspalte.
Geschrieben wird in
Tabelle2Wenn diese Vorgaben erfüllt sind, dann unten stehenden Code ausführen:
Code:
Option Explicit
Sub Spalte_in_Gruppen_transponieren()
Dim i As Long, j As Long, n As Long
Dim lngZ As Long
Dim arrText
Dim feld
Dim arr()
Dim cKey
Dim cO As Object
Set cO = CreateObject("Scripting.Dictionary")
With Sheets("Tabelle1")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(3, 3), .Cells(lngZ, 3)).FormulaLocal = "=WENN(A3=" & """Mehr Information""" & ";C2+1;C2)"
feld = .Range(.Cells(1, 1), .Cells(lngZ, 3))
For i = 3 To lngZ - 1
If feld(i, 1) <> "Mehr Information" Then
cKey = feld(i, 3)
If feld(i, 1) <> "" And feld(i, 2) = "" Then
cO(cKey) = cO(cKey) & "|" & feld(i, 1)
ElseIf feld(i, 2) <> "" Then
cO(cKey) = cO(cKey) & "|" & feld(i, 1) & "$" & feld(i, 2)
End If
End If
Next i
ReDim arr1(cO.Count, 5)
For Each cKey In cO
arrText = Split(Replace(cO(cKey), "|", "", 1, 1), "|")
arr1(j, 0) = arrText(0) 'Bezeichnung
For n = LBound(arrText) + 1 To UBound(arrText)
If arrText(n) Like "Tel*$*" Then
arr1(j, 4) = Split(arrText(n), "$")(1) 'Tel
ElseIf arrText(n) Like "Fax*$*" Then
arr1(j, 5) = Split(arrText(n), "$")(1) 'Fax
ElseIf arrText(n) Like "#*" Then
arr1(j, 3) = arrText(n) 'PLZ Ort
ElseIf arrText(n) Like "*#*" Then
arr1(j, 2) = arrText(n) 'straße
Else
arr1(j, 1) = arrText(n) 'Name
End If
Next n
j = j + 1
Next
.Range(.Cells(3, 3), .Cells(lngZ, 3)).ClearContents
End With
With Sheets("Tabelle2")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Range("A2:F" & lngZ).ClearContents
.Cells(2, 1).Resize(j, 6).Value = arr1
End With
End Sub
Unten stelle ich die Beispielmappe ein.
Dort braucht nur die Tabelle2 aktiviert werden, dann wird der Code automatisch ausgeführt.
Spalte In Gruppen Transponieren.xlsm (Größe: 34,57 KB / Downloads: 1)