Mit Excel VBA Daten konvertieren Sie mehrzeilige, uneinheitliche Datenblöcke in saubere, zeilenweise strukturierte Datensätze – schnell, reproduzierbar und fehlerarm. Dieser Beitrag zeigt Schritt für Schritt, wie aus einer Liste von Fall-Nummern mit darunter aufgelisteten Merkmalen automatisch konsistente Datensätze entstehen – inklusive VBA-Code, Erklärung und Praxis-Tipps.
Ausgangssituation und Ziel
Ziel ist es, allen Fall-Nummern aus Spalte A die zugehörigen Merkmale aus Spalte B zuzuordnen und daraus pro Fall einen konsistenten, einzeiligen Datensatz zu erzeugen. Beispiel: Der erste Datensatz soll wie folgt aufgebaut sein – Fall-Nr. | Merkmal 1 | Merkmal 2 – etwa: 1234 | FE00012 | FE00014.
Praxisbeispiel: So liegen die Daten vor
Typischerweise steht in Spalte A die Fall-Nr. nur einmal. In den darauffolgenden Zeilen bleibt Spalte A leer; Spalte B listet dort zusätzliche Merkmale desselben Falls auf. Erst wenn eine neue Fall-Nr. in Spalte A erscheint, beginnen die Merkmale des nächsten Falls. Dieser mehrzeilige Datenblock soll in eine kompakte, zeilenweise Tabelle überführt werden.
VBA-Lösung: Excel VBA Daten konvertieren
Für die Zuordnung der Merkmale zu den Fall-Nummern kann folgender VBA-Code verwendet werden:
Sub umgliedern()
Dim lngZeile As Long
Dim lngSpalte As Long
'** Vorgaben definieren
Set ws = ThisWorkbook.ActiveSheet
lngZeile = 1
lngSpalte = 7
'** Ausgabebereich löschen
ws.Range("E2:Z100").ClearContents
'** Durchlaufen des Datenbestands von Zeile 2 bis zur letzten Zeile in Spalte B
For a = 2 To ws.Cells(Rows.Count, 2).End(xlUp).Row
'** Prüfen, ob die Zeile in Spalte 1 einen Wert enthält
If ws.Cells(a, 1).Value <> "" Then
lngZeile = lngZeile + 1 'Zeilennummer erhöhen
ws.Cells(lngZeile, 5).Value = ws.Cells(a, 1).Value 'Wert aus Spalte 1 in neuen Bereich übertragen
ws.Cells(lngZeile, 6).Value = ws.Cells(a, 2).Value 'Wert aus Spalte 2 in neuen Bereich übertragen
lngSpalte = 7 'Spaltennummer setzen
'** Prüfen, ob Zeile in Spalte 1 leer ist
ElseIf ws.Cells(a, 1).Value = "" Then
ws.Cells(lngZeile, lngSpalte).Value = ws.Cells(a, 2).Value 'Wert aus Spalte 2 in neuen Bereich übertragen
lngSpalte = lngSpalte + 1 'Spaltennummer erhöhen
End If
Next a
End Sub
Schritt-für-Schritt: Makro einfügen und ausführen
- Daten prüfen: Stellen Sie sicher, dass in Spalte A die erste relevante Zeile eine Fall-Nr. enthält und die zugehörigen Merkmale in Spalte B darunter folgen. Entfernen Sie überflüssige Leerzeilen am Anfang.
- VBA-Editor öffnen: Drücken Sie Alt+F11, fügen Sie über Einfügen > Modul ein neues Standardmodul hinzu und wechseln Sie in das Modulfenster.
- Code einfügen und speichern: Kopieren Sie den obigen Code unverändert in das Modul. Speichern Sie die Arbeitsmappe im Makro-fähigen Format (*.xlsm).
- Makro ausführen: Wechseln Sie zum Arbeitsblatt mit den Quelldaten. Starten Sie das Makro über Alt+F8, wählen Sie umgliedern und klicken Sie auf Ausführen.
- Ergebnis interpretieren: Der Ausgabebereich beginnt ab Spalte E. Spalte E enthält die Fall-Nr., Spalte F das erste Merkmal, weitere Merkmale folgen nach rechts (G, H, ...).
Was das Makro im Hintergrund macht
Das Makro initialisiert die Zielzeile und die Zielspalte und löscht vorab den Bereich E2:Z100. Es durchläuft dann alle Zeilen mit Daten in Spalte B. Trifft es in Spalte A auf eine neue Fall-Nr., wird eine neue Zielzeile begonnen und die ersten beiden Werte (Fall-Nr. und erstes Merkmal) in Spalte E und F geschrieben; die nächste freie Zielspalte wird auf G gesetzt. Folgende Zeilen ohne Fall-Nr. in Spalte A werden als weitere Merkmale derselben Fall-Nr. erkannt und fortlaufend nach rechts angefügt.
Ergebnis
Die konvertierten Datensätze werden ab Spalte E eingetragen. Sämtliche Merkmale pro Fall-Nummer werden ausgelesen und dem entsprechenden Fall zugeordnet. Damit liegt pro Fall ein konsistenter Datensatz mit den zugeordneten Merkmalen vor. Die korrekte Anzahl der Merkmale pro Fall wird automatisch berücksichtigt, ohne dass eine Anpassung des Codes erforderlich ist.
Typische Fehlerquellen und Lösungen
- Erste relevante Zeile ohne Fall-Nr.: Befinden sich zu Beginn Zeilen, in denen Spalte A leer ist, fehlen dem Makro die nötigen Startinformationen. Stellen Sie sicher, dass die erste verarbeitete Zeile eine Fall-Nr. enthält.
- Überschreiben von Daten: Der Bereich E2:Z100 wird vor der Ausgabe gelöscht. Arbeiten Sie daher auf einer Kopie, auf einem separaten Arbeitsblatt oder prüfen Sie, dass dort keine wichtigen Inhalte stehen.
- Zellformate: Alphanumerische Merkmale wie FE00012 sollten als Text formatiert sein, damit führende Nullen erhalten bleiben.
- Blattschutz: Ein aktiver Blattschutz oder gesperrte Zellen im Zielbereich verhindern das Schreiben. Heben Sie den Schutz vorübergehend auf.
- Option Explicit: In Umgebungen mit erzwungener Variablendeklaration kann eine Fehlermeldung zu nicht deklarierten Variablen auftreten. Prüfen Sie die Projekteinstellungen vor dem Start.
- Leistungsaspekte: Bei sehr großen Datenmengen empfiehlt es sich, während der Ausführung andere rechenintensive Vorgänge zu vermeiden und nach Abschluss zu speichern.
Praxis-Tipps und Varianten
Sortieren Sie die Daten optionally nach Fall-Nr., damit alle Merkmale eines Falls zusammenstehen. Prüfen Sie außerdem, ob die Anzahl der Merkmale pro Fall typischerweise innerhalb weniger Spalten bleibt, damit die Zielstruktur übersichtlich ist. Führen Sie das Makro bei wichtigen Auswertungen zunächst auf einer Kopie der Datei aus, um das Ergebnis zu validieren.
Beispieldatei
Die zugehörige Beispieldatei mit Ausgangsdaten und Lösung kann über den verlinkten Beitrag heruntergeladen werden.
Fazit
Mit Excel VBA Daten konvertieren Sie uneinheitliche, mehrzeilige Datenblöcke in klare, analysierbare Datensätze. Das gezeigte Makro ordnet alle Merkmale zuverlässig den jeweiligen Fall-Nummern zu und erzeugt eine kompakte, auswertbare Tabelle – ideal für Berichte, Pivot-Auswertungen und Importe.
Über den nachfolgenden Link kann die Beispieldatei heruntergeladen werden.

