Hallo Zusammen
Ich habe 3 Tabellen (durch Analysis for Office generiert) in zwei verschiedenen Arbeitsblättern. Die Tabellen beinhalten verschiedene Hierarchiestufen und bei der untersten Stufe ist eine Kontonummer angefügt, welche an diese Stufe zwingend gehört. Alle 3 Tabellen haben natürlich Hierarchien von 01_... bis 10_... und die Werte sind teilweise doppelt.
Das sieht so aus:
Anfang:
[-] 0102/ABC/ABC-ER/0ABC-ER |
[-] 0102/ABC/ABC-ER/01 |
[-] 0102/ABC/ABC-ER/01_1 |
[-] 0102/ABC/ABC-ER/01_1_1 |
[-] 0102/ABC/ABC-ER/01_1_1_1 |
ABC/300000 |
ABC/300010 |
[-] 0102/ABC/ABC-ER/01_1_1_2 |
ABC/300100 |
ABC/300110 |
ABC/300120 |
ABC/300130 |
Ende:
ABC/900110 |
[-] 0102/ABC/ABC-ER/08_9 |
[-] 0102/ABC/ABC-ER/08_9_1 |
[-] 0102/ABC/ABC-ER/08_9_1_1 |
ABC/900200 |
[-] 0102/ABC/ABC-ER/08_10 |
[-] 0102/ABC/ABC-ER/08_10_1 |
[-] 0102/ABC/ABC-ER/08_10_1_1 |
ABC/900400 |
ABC/900450 |
Mein Ziel ist es, die Werte aus den 3 Tabellen in einer Tabelle zu konsolidieren und die Hierarchie aufsteigend zu sortieren. Dabei sollen die Konti an dem zugehörigen untersten Hierarchieknoten bleiben. In der konsolidierten Tabelle sollen dann auch mögliche Duplikate entfernt werden.
Aktuell ist der Stand, dass ich die Werte der 3 Tabellen in 3 Arrays eingelesen habe. Hier mein aktuelles Makro:
------------------------
Sub Datenaufbereitung()
Application.ScreenUpdating = False
Worksheets("Q00_YYY_MFP").Activate '(y)
'Bestimmung letzte Zeile und Spalte
a = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
b = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
'Erstellung 1. Array daten1 (Ausgangsdaten 1)
Dim daten1() As Variant
ReDim daten1(1 To a, 1 To b)
For j = 1 To b
For i = 1 To a
daten1(i, j) = Cells(i, j)
Next i
Next j
'--------------------
Worksheets("Q00_ZZZ_IST-PLAN").Activate '(z)
'Bestimmung letzte Zeile und Spalte
c = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
d = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
'Erstellung 2. Array daten2 (Ausgangsdaten 2)
Dim daten2() As Variant
ReDim daten2(1 To c, 1 To d - 5)
For j = 1 To d - 5
For i = 1 To c
daten2(i, j) = Cells(i, j)
Next i
Next j
'Erstellung 3. Array daten3 (Ausgangsdaten 3)
Dim daten3() As Variant
ReDim daten3(1 To c, 5 To d)
For l = 5 To d
For k = 1 To c
daten3(k, l) = Cells(k, l)
Next k
Next l
'----------------------------
'Erstellung 4. Array datenZ (Einfügen der Daten in dem Zielarray/Tabellenblatt)
Worksheets("00_XXX").Activate '(x)
Cells.Clear
Dim e As Long
Dim f As Long
e = 10000
f = 20
'Erstellung Zielarray
Dim datenZ() As Variant
ReDim datenZ(1 To e, 1 To f)
'Daten von Array 1 einfügen
For i = 5 To a
datenZ(i, 1) = daten1(i, 1)
Next i
Range(Cells(1, 1), Cells(e, f)).Value = datenZ
Dim LastRow As Long 'anschliessendes einfügen
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Daten von Array 2 einfügen
For j = 5 To c
LastRow = LastRow + 1
datenZ(LastRow, 1) = daten2(j, 1)
Next j
Range(Cells(1, 1), Cells(LastRow, f)).Value = datenZ
Dim lastRow2 As Long 'anschliessendes einfügen
lastRow2 = Cells(Rows.Count, 1).End(xlUp).Row
'Daten von Array 3 einfügen
For k = 5 To c
lastRow2 = lastRow2 + 1
datenZ(lastRow2, 1) = daten3(k, 5)
Next k
Range(Cells(1, 1), Cells(lastRow2, f)).Value = datenZ
Application.ScreenUpdating = True
End Sub
--------------
Kann mir jemand bitte Hilfe leisten, wie ich die Hierachien konsolidiert und aufsteigend sortiert in einer Tabelle ausgeben kann? Ich habe es schon mit Google und ChatGPT versucht, bin jedoch nicht auf eine zufriedenstellende Lösung gekommen.
Danke euch im Voraus & beste Grüsse
MD
|