Konvertieren eines mehrzeiligen Daten-Blocks zu einem konstistenten Datensatz

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.

 

Relevante Artikel

    Wir benutzen Cookies
    Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.