"Matrix auflösen"

Bild

Betrifft: "Matrix auflösen"
von: Bastian
Geschrieben am: 19.05.2015 10:37:23

Hallo zusammen,
ich bin ein durchschnittlicher Excel Anwender ohne VBA Kenntnisse. Ich habe Daten aus SAP in folgendem Format exportiert:
Verbrauchsmenge
Artikel M1 M2 M3
1 50 60 50
2 10 12 60
3 ...
Für ca. 35.000 Artikel jeweils eine Spalte mit monatlichen Mengen. Diese benötige ich jedoch in einem Format, dass ich für jeden Monatswert eine eigene Spalte habe. Sollte also folgendermaßen aussehen.
Artikel Monat Menge
1 M1 50
1 M2 60
1 M3 50
2 M1 10
2 M2 12
2 M3 60
.
.
.
Komme ich irgendwie relativ einfach dort hin?
Vielen Dank für Eure Unterstützung!
Bastian

Bild

Betrifft: AW: "Matrix auflösen"
von: ede
Geschrieben am: 19.05.2015 11:20:52
Hallo bastian,
anbei mal ein Beispielcode um es per Schleife umzusetzen.


Sub bastian()
zeile = 2
For Z = 2 To ThisWorkbook.Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row ' für jefe  _
zeile aus Tabelle1
    For s = 2 To 4 ' für die Spalten 2 bis 4 aus Tabelle1
        Sheets("Tabelle2").Cells(zeile, 1) = Sheets("Tabelle1").Cells(Z, 1)   'Artikel
        Sheets("Tabelle2").Cells(zeile, 2) = Sheets("Tabelle1").Cells(1, s)   'Monat
        Sheets("Tabelle2").Cells(zeile, 3) = Sheets("Tabelle1").Cells(Z, s)   'wert
        zeile = zeile + 1
    Next s
Next
End Sub

gruss
ede

Bild

Betrifft: AW: "Matrix auflösen"
von: Rudi Maintaire
Geschrieben am: 19.05.2015 11:51:12
Hallo,
in ein Modul und aus der SAP-Tabelle starten.

Sub Liste()
  Dim arrTmp, arrDaten(), i As Long, j As Long, n As Long
  arrTmp = Cells(1, 1).CurrentRegion
  ReDim arrDaten(1 To (UBound(arrTmp) - 1) * UBound(arrTmp, 2) + 1, 1 To 3)
  n = 1
  arrDaten(n, 1) = "Artikel"
  arrDaten(n, 2) = "Monat"
  arrDaten(n, 3) = "Menge"
  For i = 2 To UBound(arrTmp)
    For j = 2 To UBound(arrTmp, 2)
    n = n + 1
      arrDaten(n, 1) = arrTmp(i, 1)
      arrDaten(n, 2) = arrTmp(1, j)
      arrDaten(n, 3) = arrTmp(i, j)
    Next
  Next
  With Worksheets.Add
    .Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
  End With
End Sub

Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "min und max aus Datenbereich"