Konvertieren eines mehrzeiligen Daten-Blocks zu einem konstistenten Datensatz

In diesem Beispiel zeigen wir Ihnen, wie sich ein nicht konsistenter Datenblock in einen kosistenten Datensatz konvertieren lässt. Die folgende Abbildung zeigt die Ausgangssituation, also den Datenblock, der entsprechend konvertiert werden soll.

  A B
1 Fall-Nr. Merkmal
2 1234 FE00012
3   FE00014
4 12344 FE00018
5   FE00012
6 11111 FE00024
7   FE00012
8   FE00035
9 9234 FE00001
10 11134 FE00015
11   FE00009
12    

Ziel ist nun, zu jeder Fall-Nummer aus Spalte A die Merkmale zuzuordnen. Der erste Datensatz soll also wie folgt aufgebaut sein:

Fall-Nr.   Merkmal 1   Merkmal 2
1234      FE00012     FE00014

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


Nachdem das Makro durchgelaufen ist, sieht das Ergebnis wie folgt aus:

  E F G H
1 Fall-Nr. Merkmal 1 Merkmal 2 Merkmal 3
2 1234 FE00012    
3 12345 FE00014    
4 12344 FE00018 FE00012  
5 11111 FE00024 FE00012 FE00035
6 9234 FE00001    
7 11134 FE00015 FE00009  
8        

Die konvertierten Datensätze wurden ab Spalte E eingetragen. Sämtliche Merkmale pro Fall-Nummer wurden ausgelesen und dem entsprechenden Fall zugeordnet. Damit liegt pro Fall ein kosistenter Datensatz mit den zugeordeten Mermalen vor.

Dieser Code berücksichtigt automatisch die korrekte Anzahl an Merkmalen pro Fall-Nr, ohne dass eine Anpassung des Codes erforderlich ist.

Über den nachfolgenden Link kann die Beispieldatei heruntergeladen werden.