(Forum) PQ: Werte aus anderen Registerblättern abhängig vom Auswahlfeld

(Head­er)

Quelle:  https://www.herber.de/forum/messages/1993389.html
Stand: 13.10.2024 12:45

Hier der Eröff­nungs­beitrag aus dem Forum:


Hal­lo,

ich möchte abhängig von einem Auswahlfeld in B1 (Werk 1 bis Werk 4) jew­eils die Umsatzw­erte Jan.-Dez. 24 aus den ver­schiede­nen Reg­is­terblät­tern der Werke ziehen.
Die Umsatzw­erte ste­hen in den Reg­is­terblät­tern des jew­eili­gen Werkes zwar immer in den sel­ben Feldern, die Struk­tur ist von Werk zu Werk (von Reg­is­terblatt zu Reg­is­terblatt) aber etwas abwe­ichend.
Bekomme es ger­ade nicht hin. Anbei ist auch die Beispiel­d­atei.

https://www.herber.de/bbs/user/172755.xlsx

Vie­len Dank & Gruß
Man­fred


Vor­ab ange­merkt (und nach erstell­ter Lösung nachgeschoben): Meine Ausar­beitung basiert auf der im ersten Beitrag geposteten Muster-*.xlsx (siehe weit­er oben). Die später „nachgeschobene“ Datei mag zwar den Gegeben­heit­en vor Ort entsprechen, aber da ich Sala­mi-Tak­tik in Foren kom­plett ablehne, belasse ich es bei mein­er zu Beginn erstell­ten. Lösung. – Und noch etwas: Der erste Lösungsvorschlag funk­tion­ierte derzeit zwar, aber die Funk­tion INDIREKT() arbeit­et volatil, darum sollte IMHO solch eine Bremse nicht ver­wen­det wer­den. 😉

Mein Lösungsweg mit Pow­er Query:

  • Zelle B1 als Bere­ich deklar­i­eren, mit dem Namen WerkAuswahl.
  • B1 als Tabelle/Bereich in PQ importieren
  • Im recht­en Seit­en­fen­ster alle nach Quelle automatsch erzeugten Schritte löschen.
  • Recht­sklick in die Dat­en-Zelle und Drill­down aus­führen.
  • Als Nur Verbindung Schließen und laden.
  • Die 4 Dat­en-Tabellen ab B4 bis Zeile 16 (jew­eils let­zte Spalte) als Tabelle/Liste for­matieren.
  • Über Dat­en | Dat­en abrufen | Aus anderen Quellen | Leere Abfrage eine leere Query erstellen.
  • Sofort in die Edi­tierzeile diese Formel eingeben:
    = Excel.CurrentWorkbook()
  • In der neu erstell­ten Abfrage1, Spalte Name die Zeile WerkAuswahl per Fil­ter löschen, da diese Tabelle für die Auswer­tung nicht genutzt wer­den soll..

Die restlichen Schritte ergeben sich aus dem M-Code; wobei Sie beim Fil­tern der Auswer­tung zuerst in der Spalte Name einen beliebi­gen Wert auswählen und dann per Hand durch den Namen der Drill­down-Query erset­zen.

Hier der M‑Quellcode für die Werks-Auswahl:

let
    Quelle = Excel.CurrentWorkbook(){[Name="WerkAuswahl"]}[Content],
    Column1 = Quelle{0}[Column1]
in
    Column1

… und für die eigentliche Auswer­tung:

let
    Quelle = Excel.CurrentWorkbook(),
    #"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name] <> "WerkAuswahl")),
    #"Ersetzter Wert" = Table.ReplaceValue(#"Gefilterte Zeilen","_"," ",Replacer.ReplaceText,{"Name"}),
    #"Erweiterte Content" = Table.ExpandTableColumn(#"Ersetzter Wert", "Content", {"Monat", "Spalte1", "Umsatz", "Spalte2"}, {"Monat", "Spalte1", "Umsatz", "Spalte2"}),
    #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Erweiterte Content", {"Name", "Monat"}, "Attribut", "Wert"),
    #"Gefilterte Zeilen1" = Table.SelectRows(#"Entpivotierte andere Spalten", each [Name] = WerkAuswahl),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Gefilterte Zeilen1",{"Attribut"}),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Entfernte Spalten",{{"Wert", "Umsatz"}}),
    #"Geänderter Typ" = Table.TransformColumnTypes(#"Umbenannte Spalten",{{"Umsatz", Currency.Type}}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ", "Monate", each DateTime.ToText([Monat], "MMM. yy")),
    #"Entfernte Spalten1" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Monat", "Name"}),
    #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Entfernte Spalten1",{"Monate", "Umsatz"})
in
    #"Neu angeordnete Spalten"

Und hier, beim Stich­wort last but not least find­en Sie noch einen Hin­weis, wo und wie Sie Antworten auf eventuelle Fra­gen oder auch die aus­gear­beit­ete Datei bekom­men kön­nen. Grundle­gen­des zum The­ma M-Code lesen Sie hier im Blog nach.

 

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.