ich suche nach einer Lösung, die ich automatisch immer wieder anwenden kann.
Und zwar für folgenden Fall. ICh bekomme regelmäßig eine Tabelle mit Produkten und Lieferanten. Diese werden immer untereinander aufgeführt. Das PRodukt kann von einer unterschiedlichen Anzahl von Lieferanten kommen. ICh möchte die Liste so anpassen, dass die Lieferanten nicht mehr untereinander und die Produkte mehrfach aufgeführt werden, sondern dass ich immer eine Zeile pro Produkt habe und dahinter habe ich in den Spalten die Lieferanten.
Klar Transponieren geht manuell, aber nicht bei der Anzahl von über 200.000 Produkten mit immer einer abwechselnden Anzahl Lieferanten.
Habt ihr eine Idee, ob mir POWER QUERY hier weiterhelfen kann oder welche Lösung ihr vielleicht habt?
Ich habe eine Beispieldatei hier mit angehangen.
Über eine Antwort, Ratschlag oder Lösung freue ich mich sehr.
16.02.2025, 10:09 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2025, 10:09 von RPP63.)
Moin Miguel! Ich hoffe doch, dass die Anzahl der Lieferanten überschaubar (< 10) ist. Sonst dürfte die gewünschte Kreuztabelle schnell unübersichtlich werden.
Per Pivot-Table? • Produkt in Zeilen • Lieferant in Spalten und Werte
Gruß Ralf Oder einfach mittels Formel:
A
B
C
D
E
F
G
H
1
Produkt
Lieferant
Lieferant_A
Lieferant_B
Lieferant_C
Gesamt
2
Produkt_A
Lieferant_A
Produkt_A
1
1
1
3
3
Produkt_A
Lieferant_B
Produkt_B
1
1
2
4
Produkt_A
Lieferant_C
Produkt_C
1
1
5
Produkt_B
Lieferant_A
Produkt_D
1
1
2
6
Produkt_B
Lieferant_B
Produkt_E
1
1
1
3
7
Produkt_C
Lieferant_A
Gesamt
5
4
2
11
8
Produkt_D
Lieferant_A
9
Produkt_D
Lieferant_B
10
Produkt_E
Lieferant_A
11
Produkt_E
Lieferant_B
12
Produkt_E
Lieferant_C
Zelle
Formel
D1
=PIVOTMIT(A2:A12;B2:B12;B2:B12;ANZAHL2)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Bei 200.000 Produkten oder auch evtl. nur 200.000 Produkt-/Lieferantenkombinationen, werde es bestimmt mehr als 100 verschiedene Lieferanten sein. Spätestens dann, wenn du eine Produktgruppe filterst, für die es nur 10 verschiedene Lieferanten gibt, die sich aber iwo in den 100 Spalten wiederfinden, wirst du erkennen, dass deine Idee nicht so gut ist.
Noch früher wirst du es feststellen, wenn du eine Lieferantenbewertung durchgeführt hast und du zu ausgewählten Produkten die Möglichen Lieferanten und deren Bewertungskriterien sehen willst. Das wird dann horizontal sehr sehr unübersichtlich und filtern nach Bewertungskriterien ist horizontal auch kaum nicht möglich.
natürlich hat WS-53, wenn er darauf hinweist, das bei Massendaten dieses Verfahren schnell ins Chaos führen kann. Trotzdem hier mal meine PQ-Version auf der Datenbasis von Jockel.
@ Jörg - Ich empfinde die Anforderung zwar nach wie vor als unsinnig, aber sie ist durchaus dazu geeignet, dem einen oder anderen PQ etwas näher zu bringen.
Deshalb habe ich zuerst einmal, um die Unsinnigkeit erkennbarer zu machen, die Testdaten etwas erweitert. Als nächstes dann deine Abfrage von statischer Lieferantendefinition auf eine dynamische umgestellt, denn vorher wäre bei jedem neuen Lieferanten eine Anpassung fällig gewesen.
Weiterhin habe ich auch noch 2 Alternative Varianten erstellt, bei denen sich die 2, nicht sonderlich gut für Auswertungen eignet, aber dafür die horizontale Darstellung etwas übersichtlicher gestaltet.
Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:1 Nutzer sagt Danke an ws-53 für diesen Beitrag 28 • Jockel
(17.02.2025, 16:22)ws-53 schrieb: @ Jörg - Ich empfinde die Anforderung zwar nach wie vor als unsinnig, aber sie ist durchaus dazu geeignet, dem einen oder anderen PQ etwas näher zu bringen.
qws-53, für mich reicht meine Variante. Also gebe ich dir unbesehen Recht
Gruß Jörg stolzes Mitglied im ----Excel-Verein Freund einer excellenten Power Query-Abfrage
Deine 2. Variante gefällt mir und es fuchst mich 1 bißchen, daß mir sowas nicht einfällt. Aber ich konnte meine Finger nicht stillhalten - und hier mein Exzerpt:
Code:
let Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], #"Sorted Rows" = Table.Sort(Source,{{"Produkt", Order.Ascending}, {"Lieferant", Order.Ascending}}), Group_Produkt = Table.Group(#"Sorted Rows", {"Produkt"}, {{"Anz.Lief", each Table.RowCount(_), Int64.Type}, {"Alle", each _, type table [Produkt=text, Lieferant=text]}}), Find_Max = Table.Max(Group_Produkt, "Anz.Lief")[Anz.Lief], Lieferanten_Hdr = List.Transform({1..Find_Max}, each "Lieferant " & Text.PadStart(Text.From(_), 3, "0")),
Col_Lief = Table.TransformColumns(Group_Produkt, {{"Alle", each _[Lieferant]}}),
Extract_Lief = Table.TransformColumns(Col_Lief, {"Alle", each Text.Combine(List.Transform(_, Text.From), ";"), type text}), Split_Col = Table.SplitColumn(Extract_Lief, "Alle", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), Lieferanten_Hdr), //Change_Types = Table.TransformColumnTypes(Split_Col, List.Transform(List.Skip(Table.ColumnNames(Split_Col), 2), each {_, type text} )) Change_Types = Table.TransformColumnTypes(Split_Col, List.Transform({"Produkt"} & Lieferanten_Hdr, each {_, type text} )) in Change_Types
Hallo Jockel
Dein Anspruch im Trailer (Freund einer excellenten Power Query-Abfrage) paßt einfach nicht zur Aussage:
Zitat:qws-53, für mich reicht meine Variante. Also gebe ich dir unbesehen Recht
Gruß von Luschi aus klein-Paris
Folgende(r) 1 Nutzer sagt Danke an Luschi für diesen Beitrag:1 Nutzer sagt Danke an Luschi für diesen Beitrag 28 • ws-53