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.