Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1160to1164
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vorbereitung für Pivot

Vorbereitung für Pivot
Matthias
Hallo zusammen,
um eine detailierte Auswertung einer Stückliste zu erreichen, muss ich die vorhanden Datensätze etwas umstrukturiren. Das Ziel ist eine Auswertung mit Hilfe einer Pivottabelle.
Momentan ist die Tabelle folgendermaßen aufgebaut:
Sachnummer  Beschreibung   Baugruppe1   Baugruppe2   Baugruppe3   Gesamtanzahl
97687698           Schraube     2            5           3             10
34653565           Mutter          3           6            5            14
89768987           Scheibe       4           4            3            11
Für die Auswertung mit der Pivot-Tabelle würden wir die momentane Tabelle gerne etwas umstrukturieren. Am besten wär so mit folgendem Aufbau:
Sachnummer    Beschreibung    Baugruppe in der das Teil vorkommt    Anzahl
97687698        Schraube                 Baugruppe1                           2
97687698        Schraube                 Baugruppe2                           5
97687698        Schraube                 Baugruppe3                           3
34653565        Mutter                   Baugruppe1                           3
34653565        Mutter                   Baugruppe2                           6
usw.
Ich hoffe man kann an den beiden Beispielen erkennen, was ich vor habe.
Dann schon jetzt vielen Dank, für alle kommenden Antworten.
Gruß
Matthias

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Vorbereitung für Pivot
24.06.2010 07:02:52
heide_tr
hallo Matthias,
ich würde es per VBA lösen:


Sub aufbereiten()
Dim Arr As Variant
   Arr = Array("C", "D", "E")
   letzte = 2
   For zeile = 3 To Worksheets(1).Range("A65536").End(xlUp).Row
      For i = 1 To 3
         Worksheets(2).Range("A" & letzte + i).Value = Worksheets(1).Range("A" & zeile).Value
         Worksheets(2).Range("B" & letzte + i).Value = Worksheets(1).Range("B" & zeile).Value
         Worksheets(2).Range("C" & letzte + i).Value = Worksheets(1).Range(Arr(i - 1) & "1").Value
         Worksheets(2).Range("D" & letzte + i).Value = Worksheets(1).Range(Arr(i - 1) & zeile).Value
      Next i
      letzte = letzte + 3
   Next zeile
End Sub


viele Grüße. Heide
Anzeige
AW: Vorbereitung für Pivot
24.06.2010 08:43:22
Matthias
Hallo,
klappt schon ziemlich gut für mein kleines Beispiel.
Ich habe momentan nur das Problem dass die Spalten für meine Baugruppen bis GP reichen und diese alle im Array zu definieren ist doch äußerst umständlich.
Gibt es dafür einen einfacheren Weg, denn ich nicht kenne?
Danke,
Matthias
AW: Vorbereitung für Pivot
24.06.2010 09:16:24
heide_tr
hallo Matthias,
das ist kein Problem, Du kannst einfach mit der Spaltennummer arbeiten:


Sub aufbereiten()
   bg = 3 ' hier die Anzahl der Baugruppen eintragen!
   letzte = 2
   For zeile = 3 To Worksheets(1).Range("A65536").End(xlUp).Row
      For i = 1 To bg
         Worksheets(2).Range("A" & letzte + i).Value = Worksheets(1).Range("A" & zeile).Value
         Worksheets(2).Range("B" & letzte + i).Value = Worksheets(1).Range("B" & zeile).Value
         Worksheets(2).Range("C" & letzte + i).Value = Worksheets(1).Cells(i + 2, 1).Value
         Worksheets(2).Range("C" & letzte + i).Value = Worksheets(1).Cells(1, i + 2).Value
         Worksheets(2).Range("D" & letzte + i).Value = Worksheets(1).Cells(zeile, i + 2).Value
      Next i
      letzte = letzte + bg
   Next zeile
End Sub


viele Grüße. Heide
Anzeige
AW: Vorbereitung für Pivot
24.06.2010 09:24:37
heide_tr
hallo Matthias,
sorry, eben war noch eine Testzeile drin. So ist's besser:


Sub aufbereiten()
   bg = 3 ' hier die Anzahl der Baugruppen eintragen!
   letzte = 2
   For zeile = 3 To Worksheets(1).Range("A65536").End(xlUp).Row
      For i = 1 To bg
         Worksheets(2).Range("A" & letzte + i).Value = Worksheets(1).Range("A" & zeile).Value
         Worksheets(2).Range("B" & letzte + i).Value = Worksheets(1).Range("B" & zeile).Value
         Worksheets(2).Range("C" & letzte + i).Value = Worksheets(1).Cells(1, i + 2).Value
         Worksheets(2).Range("D" & letzte + i).Value = Worksheets(1).Cells(zeile, i + 2).Value
      Next i
      letzte = letzte + bg
   Next zeile
End Sub


viele Grüße. Heide
Anzeige
AW: Vorbereitung für Pivot
24.06.2010 09:46:14
Rudi
Hallo,
teste mal:
Sub tttt()
Dim vntArr, oDaten, i As Long, j As Long
Dim sKey As String, arrDaten(), arrKeys, arrItems
Set oDaten = CreateObject("Scripting.Dictionary")
vntArr = Cells(1, 1).CurrentRegion
For i = 2 To UBound(vntArr)
For j = 3 To UBound(vntArr, 2) - 1
If vntArr(i, j) > 0 Then
sKey = vntArr(i, 1) & "|" & vntArr(i, 2) & "|" & vntArr(1, j)
If Not oDaten.exists(sKey) Then oDaten.Add sKey, vntArr(i, j)
End If
Next
Next
arrKeys = oDaten.Keys
arrItems = oDaten.items
ReDim arrDaten(1 To oDaten.Count + 1, 1 To 4)
arrDaten(1, 1) = "Artikel"
arrDaten(1, 2) = "Bezeichnung"
arrDaten(1, 3) = "Baugruppe"
arrDaten(1, 4) = "Menge"
For i = 0 To UBound(arrKeys)
arrDaten(i + 2, 1) = Split(arrKeys(i), "|")(0)
arrDaten(i + 2, 2) = Split(arrKeys(i), "|")(1)
arrDaten(i + 2, 3) = Split(arrKeys(i), "|")(2)
arrDaten(i + 2, 4) = arrItems(i)
Next
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), 4) = arrDaten
End With
End Sub

Die Basistabelle muss in A1 beginnen und darf keine komplett leeren Zeilen/ Spalten enthalten.
Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige