adminknecht
Goto Top

Excel 2010: Matrix in Liste zurück umwandeln

Hallo,

ich habe hier ein kleines Excel-Problem, und zwar will ich aus einer Matrix (zweidimensional) wieder eine eindimensionale Liste machen, zur Veranschaulichung mal dieses Beispiel hier, bei der die Matrix mit den Mengen je Kunde und Artikel vorgegeben ist und eine Liste in der Form des Beispiels darunter erzeugt werden soll:

5943a1aa1e431f383bd691efafc9c682

..also quasi eine "Pivot-Tabelle rückwärts", wenn man so möchte!

Das geht vermutlich nur per VBA, oder?

Ich bin euch für jeden Tipp dankbar!

Marcus

Content-Key: 289420

Url: https://administrator.de/contentid/289420

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 114757
Solution 114757 Nov 26, 2015 updated at 14:14:28 (UTC)
Goto Top
https://drive.google.com/file/d/0B_Oqbs4tcHfrRkdVejJuMHFwdEU/view?usp=sh ...
Sub ListMatrix()
    With Sheets(1)
        'jede Zelle der Kundennamen von oben nach unten durchlaufen  
        For Each r In .Range("A3:A" & .Cells(Rows.Count, "A").End(xlUp).Row)  
            ' Die Anzahl der Spaltenüberschriften ermitteln und darüber iterieren  
            For c = 1 To .Range("A2").End(xlToRight).Column - 1  
                ' Nur wenn Wert größer 0 dann erstelle neue Einträge  
                If r.Offset(0, c).Value > 0 Then
                    ' so oft Einträge erstellen wie der Wert der Zelle  
                    For i = 1 To r.Offset(0, c).Value
                        ' Nächste freie Zeile ermitteln  
                        Set newline = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
                        ' Wert der neuen Zeile mit Kundenname und Artikelbezeichnung setzen  
                        newline.Resize(1, 2).Value = Array(r.Value, .Cells(2, c + 1).Value)
                    Next
                End If
            Next
        Next
    End With
End Sub
Gruß jodel32

-edit- leicht nachkorrigiert
Member: AdminKnecht
AdminKnecht Nov 26, 2015 at 10:52:46 (UTC)
Goto Top
..super sieht das aus, da muss ich jetzt nur noch durchsteigen face-smile

Was mir aufgefallen ist das, wenn ich in deiner Original-XLSM den Code via Button einmal ausführe und dann das erzeugte 2. Tabellenblatt lösche um es erneut zu testen, dann bekomme ich einen "Index ausserhalb des gültigen Bereichs"-Fehler... ?
Mitglied: 114757
114757 Nov 26, 2015 updated at 11:33:30 (UTC)
Goto Top
Ja nee, das ist normal, weil der Code kein neues Blatt erzeugt sondern das zweite Sheet hier immer als Ausgabe benutzt, wenn du das löschst und kein zweites Sheet ist mehr da , dann ist ja klar das ein Index-Out-of-Bounds kommt face-wink
Das lässt sich aber alles nach Bedarf anpassen das immer ein neues Sheet erzeugt wird etc pp..., war ja nur ein simples Beispiel.

super sieht das aus, da muss ich jetzt nur noch durchsteigen
Oben im Quelltext mit Kommentaren ergänzt ...
Member: AdminKnecht
AdminKnecht Nov 26, 2015 at 14:14:20 (UTC)
Goto Top
Perfekt, ich danke dir sehr für deine Mühe, damit habe ich das hinbekommen und werde das in einer ruhigen Minute auch mal anpassen, das z.B. mehr als eine Zeile als Beschriftungen dazu gefügt wird!

Viele Grüße
Marcus