Registriert seit: 23.08.2024
Version(en): 365
27.10.2025, 15:54
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2025, 15:55 von Jack_d.)
Hallo Gemeinde Ich bräuchte mal Rat: Ich wähle in einer Pivot Mittels Slicer einen Unterordner (Name + Jahr) aus Diesen schreibe ich mit VBA in eine Zelle Code: Tabelle3.Cells(3, 5).Value = ThisWorkbook.SlicerCaches(3).SlicerCacheLevels.Item(1).SlicerItems.Item(1).Caption
Diesen Pfad nutze ich dann (als Parameter) Code: https://xxxx.sharepoint.com/sites/xxx/xxx/xxx/xxx/xxx/NAME/JAHR/
um mir variabel verschiedene Dateien in PowerQuery zu laden. Code: let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content]{0}[Link] in Quelle
klappt auch super jetzt wollte ich diesen Parameter (parPfad) "Missbrauchen" um mir noch einen Filter in einer Abfrage zu setzen. (Jahr) Wenn ich nun die Tabelle mit Code: = Table.SelectRows(HeadsUp, each ([JAHR] = Text.Start(Text.End(parPfad,5),4)))
versuchezu Filtern kommt ein "leerer Filter" bzw- 0 Zeilen Wo hab ich denn einen Denkfehler? Grüße und Danke für eure Ideen =) Jack
Registriert seit: 12.07.2025
Version(en): 2021
27.10.2025, 17:28
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2025, 17:28 von Andreas Killer.)
(27.10.2025, 15:54)Jack_d schrieb: Code: = Table.SelectRows(HeadsUp, each ([JAHR] = Text.Start(Text.End(parPfad,5),4)))
versuchezu Filtern kommt ein "leerer Filter" bzw- 0 Zeilen a) Es ist besser nur einmal das Jahr zu erzeugen: MyYear = Text.Start(Text.End(parPfad,5),4, = Table.SelectRows(HeadsUp, each ([JAHR] = MyYear)) Und so kannst Du auch direkt sehen was da in MyYear wirklich drinsteht. b) Außerdem musst Du zwingend den Datentyp beachtet, [JAHR] läßt vermuten das die Spalte eine Zahl enthält. 2025 <> "2025"! So was geht nur in Excelformeln. Andreas.
(27.10.2025, 17:28)Andreas Killer schrieb: a) Es ist besser nur einmal das Jahr zu erzeugen:
MyYear = Text.Start(Text.End(parPfad,5),4), Whatever = Table.SelectRows(HeadsUp, each ([JAHR] = MyYear))
Und so kannst Du auch direkt sehen was da in MyYear wirklich drinsteht.
b) Außerdem musst Du zwingend den Datentyp beachtet, [JAHR] läßt vermuten das die Spalte eine Zahl enthält. 2025 <> "2025"! So was geht nur in Excelformeln.
Andreas.
Registriert seit: 25.11.2021
Version(en): 2019, 365
27.10.2025, 19:34
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2025, 19:34 von Ralf A.)
(27.10.2025, 15:54)Jack_d schrieb: ...jetzt wollte ich diesen Parameter (parPfad) "Missbrauchen" um mir noch einen Filter in einer Abfrage zu setzen. (Jahr) Wenn ich nun die Tabelle mit
Code: = Table.SelectRows(HeadsUp, each ([JAHR] = Text.Start(Text.End(parPfad,5),4)))
versuchezu Filtern kommt ein "leerer Filter" bzw- 0 Zeilen Moin, ...wenn Du schon PQ nutzt, dann bleib dabei. Das geht auch ohne VBA. Du brauchst eine formatierte Tabelle, die Dir alle notwendigen Infos liefert. Die erstellst Du über folgende Abfrage: let Quelle = Folder.Files("C:\Users\User\OneDrive\Dokumente\All_PQ"), // (Pfad anpassen, kannst ja den Deiner VBA Abfrage nutzen...) Unterordner = Table.AddColumn(Quelle, "Unterordner", each Text.AfterDelimiter([Folder Path], "\"), type text), #"Andere entfernte Spalten" = Table.SelectColumns(Unterordner,{"Name", "Folder Path", "Unterordner"}), #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Andere entfernte Spalten",{"Folder Path", "Unterordner", "Name"}), #"Gefilterte Zeilen" = Table.SelectRows(#"Neu angeordnete Spalten", each true)in #"Gefilterte Zeilen"Nenne die Abfrage AllSubfoldersDaraus erstellst Du eine Pivottable mit Slicern für Unterordner und Name (in Zeilen). Berichtslayout: Tabellenformat 2 Spalten neben der 1. Pivotdatenzeile (nehmen wir an, der Dateiname der Pivot steht in B13) Schreibst Du = B13 Das Schöne bei Pivotfiltern ist nämlich, auch wenn der Wert ursprünglich in Zeile 1001 stand, der 1. gefundendene Wert steht dann immer in B13. Schreibe darüber: Dateiauswahl, formatiere diesen Bereich als Tabelle, bennen die Tabelle um in tblAuswahl und erstelle eine neue Abfrage mit diesem Code: let Position = List.PositionOf(All_PQ[Name], Excel.CurrentWorkbook(){[Name="tblAuswahl"]}[Content][Dateiauswahl]{0}), Folder = All_PQ[Folder Path]{Position}, SubFolder = All_PQ[Unterordner]{Position}, Datei = All_PQ[Name]{Position}in Folder & SubFolder & DateiUnd schon kannst Du nach Herzenslust filtern und Dich auf den Pfad dieser Abfrage beziehen. Mal schauen, ob es diesmal Feedback und im günstigsten Fall sogar ein Danke gibt...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 09.01.2022
Version(en): Microsoft 365
Eigentlich sollte:
= Table.SelectRows(HeadsUp, each ([JAHR] = Number.From(Text.Start(Text.End(parPfad,5),4))))
genügen.
Registriert seit: 23.08.2024
Version(en): 365
28.10.2025, 11:08
(Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2025, 11:09 von Jack_d.)
Guten Morgen ihr Zwei Vielen Dank für Eure Hinweise und Anregungen. (27.10.2025, 17:28)Andreas Killer schrieb: b) Außerdem musst Du zwingend den Datentyp beachtet, [JAHR] läßt vermuten das die Spalte eine Zahl enthält. 2025 <> "2025"! So was geht nur in Excelformeln.
Andreas.
Das war tatsächlich der entscheidende Hinweis. Ich hole mir die (Jahres) Zahl ja aus einem String mit einer Textfunktion - somit gibt PQ erwartungsgemäß einen String zurück. In der FilterTabelle war die zu filternde Tabelle hingegen nicht definiert (ABC123) mit diesem Variant? kam er dann nicht zurecht. Wenn ich es sauber zu einem String machen (ABC) Filtert er korrekt. (27.10.2025, 19:34)Ralf A schrieb: Moin,
...wenn Du schon PQ nutzt, dann bleib dabei. Das geht auch ohne VBA. Du brauchst eine formatierte Tabelle, die Dir alle notwendigen Infos liefert. Die erstellst Du über folgende Abfrage: Das stimmt generell schon. Daher hatte ich letztens unter "VBA /CubeWert/Combobox" danach gefragt .. warst du ja dabei - Ist aber unterm Strich nicht so wild. da ich hier gleich das PQ.Refresh mit anstossen kann und wahrscheinlich noch mehr im weiteren. (27.10.2025, 19:34)Ralf A schrieb: let Quelle = Folder.Files("C:\Users\User\OneDrive\Dokumente\All_PQ"), // (Pfad anpassen, kannst ja den Deiner VBA Abfrage nutzen...) Unterordner = Table.AddColumn(Quelle, "Unterordner", each Text.AfterDelimiter([Folder Path], "\"), type text), #"Andere entfernte Spalten" = Table.SelectColumns(Unterordner,{"Name", "Folder Path", "Unterordner"}), #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Andere entfernte Spalten",{"Folder Path", "Unterordner", "Name"}), #"Gefilterte Zeilen" = Table.SelectRows(#"Neu angeordnete Spalten", each true) in #"Gefilterte Zeilen"
Nenne die Abfrage AllSubfolders
Daraus erstellst Du eine Pivottable mit Slicern für Unterordner und Name (in Zeilen). Berichtslayout: Tabellenformat 2 Spalten neben der 1. Pivotdatenzeile (nehmen wir an, der Dateiname der Pivot steht in B13) Schreibst Du = B13 Das Schöne bei Pivotfiltern ist nämlich, auch wenn der Wert ursprünglich in Zeile 1001 stand, der 1. gefundendene Wert steht dann immer in B13. Schreibe darüber: Dateiauswahl, formatiere diesen Bereich als Tabelle, bennen die Tabelle um in tblAuswahl und erstelle eine neue Abfrage mit diesem Code:
let Position = List.PositionOf(All_PQ[Name], Excel.CurrentWorkbook(){[Name="tblAuswahl"]}[Content][Dateiauswahl]{0}), Folder = All_PQ[Folder Path]{Position}, SubFolder = All_PQ[Unterordner]{Position}, Datei = All_PQ[Name]{Position} in Folder & SubFolder & Datei
Und schon kannst Du nach Herzenslust filtern und Dich auf den Pfad dieser Abfrage beziehen. Das klappt. Logisch - aber letztlich mach ich es bereits so, nur mit dem Unterschied dass ich mir das umständlicher über VBA über die SlicerItems hole. (27.10.2025, 19:34)Ralf A schrieb: Mal schauen, ob es diesmal Feedback und im günstigsten Fall sogar ein Danke gibt...  Was meinst du? Soweit ich mich erinnere habe ich mich immer für deine Beiträge bedankt. Habe ich dich irgendwo vergessen? Grüße Jack
|