Transponieren Zeilen in Spalten
#1
Guten Abend zusammen,

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.

Gruß


Angehängte Dateien
.xlsx   Beispiel_Lieferanten pro Produkt.xlsx (Größe: 8,91 KB / Downloads: 15)
Antworten Top
#2
Hallo

Klar hilft dir PQ weiter.
Soll das Ergebnis so aussehen?


Angehängte Dateien Thumbnail(s)
   
Viele Grüße
PIVPQ
[-] Folgende(r) 1 Nutzer sagt Danke an PIVPQ für diesen Beitrag:
  • Jockel
Antworten Top
#3
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:
ABCDEFGH
1ProduktLieferantLieferant_ALieferant_BLieferant_CGesamt
2Produkt_ALieferant_AProdukt_A1113
3Produkt_ALieferant_BProdukt_B112
4Produkt_ALieferant_CProdukt_C11
5Produkt_BLieferant_AProdukt_D112
6Produkt_BLieferant_BProdukt_E1113
7Produkt_CLieferant_AGesamt54211
8Produkt_DLieferant_A
9Produkt_DLieferant_B
10Produkt_ELieferant_A
11Produkt_ELieferant_B
12Produkt_ELieferant_C

ZelleFormel
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)
Antworten Top
#4
(15.02.2025, 22:51)PIVPQ schrieb: Hallo

Klar hilft dir PQ weiter.
Soll das Ergebnis so aussehen?

Danke für diese kleine Übung...


Angehängte Dateien
.xlsb   20250216_Lieferanten pro Produkt.xlsb (Größe: 16,93 KB / Downloads: 10)
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Antworten Top
#5
Hallo

Wie nun per PN gewünscht mein Vorschlag hierzu.


Angehängte Dateien
.xlsx   Beispiel_Lieferanten pro Produkt.xlsx (Größe: 17,29 KB / Downloads: 11)
Viele Grüße
PIVPQ
[-] Folgende(r) 1 Nutzer sagt Danke an PIVPQ für diesen Beitrag:
  • Jockel
Antworten Top
#6
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.
Antworten Top
#7
Hallo Miguel,

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.

Gruß von Luschi
aus klein-Paris


Angehängte Dateien
.xlsx   Lieferanten pro Produkt_01.xlsx (Größe: 23,53 KB / Downloads: 9)
Antworten Top
#8
@ 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.


Angehängte Dateien
.xlsb   cef - Transponieren Zeilen in Spalten (PQ).xlsb (Größe: 34,15 KB / Downloads: 7)
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Jockel
Antworten Top
#9
(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
Antworten Top
#10
Hallo WS-53,

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:
  • ws-53
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste