Mit dieser Daten-Tabelle als Beispiel : Spalte MNR muss sortiert vorliegen!
MNR |
KTXT |
SETMNR |
51-7498/41 |
|
89-3329/34 |
51-7498/41 |
|
61-4886/30 |
51-7498/41 |
|
97-2348/43 |
51-7498/41 |
|
65-2650/78 |
64-7901/28 |
|
77-3895/85 |
64-7901/28 |
|
37-3493/28 |
64-7901/28 |
|
16-8818/74 |
26-2238/71 |
|
38-2828/18 |
26-2238/71 |
|
85-4956/59 |
26-2238/71 |
|
67-1596/53 |
26-2238/71 |
|
20-2569/14 |
26-2238/71 |
|
10-8498/26 |
26-2238/71 |
|
99-4325/89 |
26-2238/71 |
|
36-5053/84 |
49-1650/62 |
|
24-9814/83 |
49-1650/62 |
|
84-5859/81 |
49-1650/62 |
|
33-4095/47 |
und dem Makro:
Option Explicit
Public Sub BlaBlub()
Dim dic As Object
Dim rngCell As Excel.Range
Dim rngCellRef As Excel.Range
Dim key As String
Dim val As String
Set rngCellRef = Range("A2") 'erste Daten-Zelle in Spalte MNR
Set rngCell = rngCellRef.Offset(1)
Set dic = CreateObject("Scripting.Dictionary")
Do While rngCell.Text <> ""
key = rngCell.Text 'MNR
val = rngCell.Offset(, 2).Text 'SETMNR ... Spalte MNR -> '2 nach rechts' -> Spalte SETMNR
If rngCell.Text <> rngCellRef.Text Then
'MNR hat sich geändert!
Set rngCellRef = rngCell
End If
'sicherstellen, dass MNR in der Liste existiert
'und initialisiert ist
If Not dic.Exists(key) Then
Call dic.Add(key, CreateObject("Scripting.Dictionary"))
End If
'SETMNR zuorden zu MNR
Call dic(key).Add(dic(key).Count, val)
'nächste Zelle
Set rngCell = rngCell.Offset(1)
Loop
Dim mnr As Variant
For Each mnr In dic
Debug.Print "'"; mnr; "'", " := "; Join(dic(mnr).items, "; ")
Next
End Sub
kommt man dann zu dieser Ausgabe:
'51-7498/41' := 61-4886/30; 97-2348/43; 65-2650/78
'64-7901/28' := 77-3895/85; 37-3493/28; 16-8818/74
'26-2238/71' := 38-2828/18; 85-4956/59; 67-1596/53; 20-2569/14; 10-8498/26; 99-4325/89; 36-5053/84
'49-1650/62' := 24-9814/83; 84-5859/81; 33-4095/47
Anstatt die Ausgabe wie hier ins Direktfenster zu schreiben, schreibst du das dann halt in Spalte F.
Deinen Code habe ich nur überflogen, aber nicht weiter angesehen - sieht zudem nach Makro-Rekorder aus... was zumindest den Job erledigen sollte.
Grüße
|