Normalisierung einer Tabelle
Hallo zusammen,
ich beiße mir gerade die Zähne aus an dem Versuch eine Tabelle in Excel zu normalisieren. Vorhanden ist:
In Spalte B stehen
Ziel ist folgender Zustand:
Hat jemand eine Idee, wie das umzusetzen ist?
Danke im Voraus,
Sarek \\//_
ich beiße mir gerade die Zähne aus an dem Versuch eine Tabelle in Excel zu normalisieren. Vorhanden ist:
In Spalte B stehen
- teilweise keine Werte
- teilweise ein Wert
- teilweise mehrere (bis zu fünf), durch Kommata getrennte Werte
Ziel ist folgender Zustand:
Hat jemand eine Idee, wie das umzusetzen ist?
Danke im Voraus,
Sarek \\//_
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21275054328
Url: https://administrator.de/forum/normalisierung-einer-tabelle-21275054328.html
Ausgedruckt am: 18.02.2025 um 23:02 Uhr
12 Kommentare
Neuester Kommentar
Moin,
Als erstes würde ich es damit machen.
Danach, je nachdem wie viel zusätzlich Spalten über alle Zeilen entstehen „zu Fuß“ die Spalten C ff in Zeilen verschieben…
Edit:
Als erstes würde ich es damit machen.
Danach, je nachdem wie viel zusätzlich Spalten über alle Zeilen entstehen „zu Fuß“ die Spalten C ff in Zeilen verschieben…
Edit:
Dein Ziel ist aber aus meiner Sicht auch keine normalisierte Tabelle.
Das kommt hinzu.
Könntest du mit VBA machen, ungefähr so
Gruß Katrin
Sub doit()
Dim cell As Range, parts() As String, i As Integer
With ActiveSheet
Set cell = .Range("A1")
While cell.Value <> ""
parts = Split(cell.Offset(0, 1).Value, ",", -1, 1)
If UBound(parts) > 0 Then
cell.Offset(0, 1).Value = Trim(parts(0))
For i = 1 To UBound(parts)
cell.Offset(i, 0).EntireRow.Insert
cell.Offset(i, 0).Resize(1, 2).Value = Array(cell.Value, Trim(parts(i)))
Next
Set cell = cell.Offset(UBound(parts) + 1, 0)
Else
Set cell = cell.Offset(1, 0)
End If
Wend
End With
End Sub

Bin unterwegs konnte es nicht testen (deswegen ungefähr), mach ich später, habe oben noch Tippfehler korrigiert, vermutlich läuft es jetzt.
Kannst ja mit der Vorlage auch selbst etwas dran mitarbeiten, ist ja kein Full-Service hier ...
Kannst ja mit der Vorlage auch selbst etwas dran mitarbeiten, ist ja kein Full-Service hier ...

So zurück im Office konnte ich es testen. Fehler im Code ist oben behoben.
Vor Makro

Nach Makro

Vor Makro

Nach Makro

Alternativ: Einfach eine Formel machen die den Text bis zum ersten Trennzeichen in Spalte B ausgibt und eine die den Rest in Spalte C ausgibt. Das ganze für weitere Trennzeichen wiederholen. Alles als Daten in ein anderes Arbeitsblatt kopieren, alte Spalten weg schmeißen, sortieren und hintereinander hängen, fertig.
Liegen die Originaldaten eventuell schon irgendwo in einem DBMS?
Liegen die Originaldaten eventuell schon irgendwo in einem DBMS?