Registriert seit: 20.03.2024
Version(en): Office365
Hallo Zusammen,
ich kämpfe jetzt seit Tagen mit Powerquery.
Ich würde gerne einen Datenimport nach einem bestimmten Namen im Spaltentitel z.B. "Abc" aussortieren und mir dann nur diese Spalten + ein paar Standardspalten anzeigen lassen.
Ich hab jetzt aus meiner Tabelle eine Liste mit = List.Select(AlleSpaltennamen, each Text.Contains(_,"abc")) gemacht, das funktioniert auch soweit.
Allerdings komm ich jetzt nicht mehr weiter. Wie krieg ich jetzt aus der Liste wieder meine Tabelle mit meinen Werten?
Zudem müsste ich dann noch 2 von den gefundenen Spalten aufsummieren bzw. ich brauche nur die Zeilen, in denen in einer der beiden Spalten eine Zahl drin steht.
Ist die Liste der richtige Weg oder bin ich auf dem Holzweg?
Danke!
Viele Grüße
Registriert seit: 26.09.2022
Version(en): 2019
Moin,
mit Table.SelectColumns() kannst du die beizubehalten den Spalten als List angeben. Du musst also nur das List.Select da einbauen und gegebenenfalls mit List.Combine() eine weitere Liste mit den fixen Spalten ergänzen.
Deine zweite Frage habe ich nicht verstanden. Vielleicht stellst du mal eine Beispieldatei zur Verfügung.
Viele Grüße derHöpp
Registriert seit: 25.11.2021
Version(en): 2019, 365
20.03.2024, 15:35
(Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024, 15:37 von Ralf A.)
Hi,
wenn Du Spalten auswählen willst, gibt es 2 Möglichkeiten. Entweder, Du gibst die (als Liste) an, die Du behalten willst, oder die (als Liste), die Du entfernen willst. Dementsprechend musst Du die Spalten selektieren oder removen. Nimm die Liste, mit den wenigsten Elementen. Die Namen, der betreffenden Spalten kennst Du ja...
Bsp.: let Quelle = Excel.CurrentWorkbook(){[Name="tblErfasst"]}[Content], //Liste aller Spaltennamen der Tabelle /(wird hier nicht gebraucht, dient nur als Beispiel) Spaltennamen = Table.ColumnNames(Quelle),
//Liste der gewünschten Spalten DieseSpaltenBehalten = {"Rubrik", "Händler", "Gruppe", "Bezeichnung"}, //Liste der zu entfernenden Spalten DieseSpaltenEntfernen = {"Händler", "Gruppe"} ,
BehalteSpalten = Table.SelectColumns(Quelle,DieseSpaltenBehalten), //behalten: über Listennamen EntferneSpalten = Table.RemoveColumns(Quelle,{"Händler", "Gruppe"}) //entfernen: statt Listenname geht es auch als neue Liste in EntferneSpalten
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
Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28
• Grantlhaua
Registriert seit: 20.03.2024
Version(en): Office365
(20.03.2024, 15:16)derHoepp schrieb: Moin,
mit Table.SelectColumns() kannst du die beizubehalten den Spalten als List angeben. Du musst also nur das List.Select da einbauen und gegebenenfalls mit List.Combine() eine weitere Liste mit den fixen Spalten ergänzen.
Deine zweite Frage habe ich nicht verstanden. Vielleicht stellst du mal eine Beispieldatei zur Verfügung.
Viele Grüße derHöpp super danke an euch beide, ich denk ich habs jetz auch hinbekommen. die 2. Frage war: Ich hab 2 Spalten nach denen ich filtern muss. Ich brauche jede Zeile in denen entweder in einer der beiden oder in beiden ein Wert steht. Würde ja gehen in dem ich eine Hilfsspalte einbaue, die die Summe aus beiden bildet und dann nach größer 0 filtert. dann muss ich aber die 2 Spalten fix angeben. Ich möchte aber, dass ich das z.b. über eine Variable die Spalten erst durch Eingabe festlege.
Registriert seit: 25.11.2021
Version(en): 2019, 365
20.03.2024, 19:31
(Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024, 19:31 von Ralf A.)
...letzten Endes willst Du ja auch wieder nur Zeilen filtern. Und wenn ich es richtig verstanden habe, dann willst Du alle die sehen, wo in mindestens einer von 2 Spalten ein Wert steht. Also, die, wo in beiden nix steht, die sollen raus. Das ginge z. Bsp. so:
= Table.SelectRows(Quelle, each not ([Menge] = null and [Anzahl] = null))
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
Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28
• derHoepp
Registriert seit: 20.03.2024
Version(en): Office365
(20.03.2024, 19:31)Ralf A schrieb: ...letzten Endes willst Du ja auch wieder nur Zeilen filtern. Und wenn ich es richtig verstanden habe, dann willst Du alle die sehen, wo in mindestens einer von 2 Spalten ein Wert steht. Also, die, wo in beiden nix steht, die sollen raus. Das ginge z. Bsp. so:
= Table.SelectRows(Quelle, each not ([Menge] = null and [Anzahl] = null)) Ah super danke! Kann ich das auch dynamisch machen? Z.B. möchte ich, je nach Eingabe, einmal die Spalten abcd-Bedarf und abce-Bedarf auswerten. bei anderer Eingabe dann xyzd-Bedarf und xyze-Bedarf. Die ersten 3 Buchstaben der Spalte sind entsprechend bei den Spalten immer gleich, d.h. ich müsste diese 3 Buchstaben in der Formel tauschen. Das geht aber in der formel oben nicht oder weil ich da ja die Quelle durch anklicken auswähle?
Registriert seit: 25.11.2021
Version(en): 2019, 365
...klar kannst Du. Indem Du Record.Field verwendest. Im Beispiel werden die 6. und 7. Spalte verwendet (Achtung, Listen sind null basiert!), ohne deren Namen zu kennen.
Spaltennamen = Table.ColumnNames(Quelle), //Liste aller Spaltennamen der Tabelle Spalte5 = Spaltennamen{5}, //nur zur Kontrolle.... Filtern = Table.SelectRows(Quelle,each not( Record.Field(_,Spaltennamen{5}) = null and Record.Field(_,Spaltennamen{6}) = null)),
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
|