Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Power Query Tabellenname

Power Query Tabellenname
24.06.2022 07:42:24
Heinz
Guten Morgen liebe Excellenten,
ich versuche mich gerade mit den Möglichkeiten von Power Query vertraut zu machen
und hänge gerade an folgendem Problem.
Ich habe eine Excel-Datei mit 10 identisch aufgebauten Tabellen in jeweils eigenen Tabellenblättern.
Jeweils 14 Spalten
Ich habe die Tabellen mit STRG-T in "intelligente" Tabellen umgewandelt,
die damit Tabelle1, Tabelle2, Tabelle3 usw. heißen.
Dann hab ich die Daten in PQ eingelesen und kann sie anfügen.
Das passt alles. Ich habe eine große Tabelle mit 14 Spalten, die Daten
stehen untereinander.
Ich brauche aber noch eine Spalte mit der Angabe, aus welcher Tabelle
die Daten stammen, also eine Spalte, in der der Quellname stehe
(in meinem Beispiel Tabelle1 bis Tabelle 10).
Wie gehe ich vor?
Ich wünsche allen Excellenten schon mal einen schönen Tag.
Heinz

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query Tabellenname
24.06.2022 09:41:13
ChrisL
Hi Heinz
siehe...
https://www.herber.de/bbs/user/153743.xlsx
cu
Chris

let
Quelle = Excel.CurrentWorkbook(),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name]  "Abfrage1")),
#"Erweiterte Content" = Table.ExpandTableColumn(#"Gefilterte Zeilen", "Content", {"Artikel", "Wert"}, {"Content.Artikel", "Content.Wert"})
in
#"Erweiterte Content"

AW: Power Query Tabellenname
24.06.2022 10:31:01
Luschi
Hallo ChrisL,
Deine Idee ist wirklich gut, bei 14 Spalten habe ich das aber ein bisschen dynamisiert.
https://www.herber.de/bbs/user/153744.xlsx
Gruß von Luschi
aus klein-Paris
Anzeige
AW: kleiner Zusatz...
24.06.2022 10:45:45
Luschi
Hallo PQ-Fan's,
so bekommt man den Datenherkunftsnamen in die 1. Spalte:

let
Quelle = Excel.CurrentWorkbook(),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name]  "HauptAbfrage")),
Spaltennamen = Table.ColumnNames(#"Gefilterte Zeilen"{0}[Content]),
#"Erweiterte Content" = Table.ExpandTableColumn(#"Gefilterte Zeilen", "Content", Spaltennamen),
SpaltenNamen_Add= List.InsertRange(Spaltennamen,0,{"Name"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Erweiterte Content", SpaltenNamen_Add)
in
#"Neu angeordnete Spalten"
Gruß von Luschi
aus klein-Paris
Anzeige
AW: ... leider so noch nicht asureichend, denn ...
24.06.2022 11:05:15
neopa
Hallo Luschi,
... Deine Lösung setzt voraus, dass alle Tabellen die gleiche Spaltenanzahl hat, wie die der ersten Tabelle. Das sollte doch auch noch lösbar sein, oder?
Gruß Werner
.. , - ...
AW: ... leider so noch nicht asureichend, denn ...
24.06.2022 12:30:14
Heinz
An alle, die hier im Thread waren.
Es funkt: Da die Spaltenanzahl in den Tabellen identisch sind, stellt sich das
zuletzt geäußerte Problem für mich (gerade) nicht.
Funkt Super.
Danke
Heinz
AW: schön für Dich, doch ...
24.06.2022 12:42:04
neopa
Hallo Heinz und Luschi,
... mich interessiert nun aber doch eine Lösung für das von mir zusätzlich aufgezeigte Problem.
Momentan würde ich diese mir so vorstellen. Von jeder Tabelle eine Spaltenüberschriftsliste erstellen, diese zusammenfügen, Duplikate löschen und dessen Ergebnis als eine Dummytabelle ohne Daten als erste Tabelle zur Verfügung stellen und danach die Daten alle anderen Tabellen dieser hinzufügen. Bei dessen Umsetzung hapert allerdings noch und vielleicht kann Luschi oder Chris einen funktionierenden M-Code dafür bereitstellen.
Gruß Werner
.. , - ...
Anzeige
AW: ... leider so noch nicht asureichend, denn ...
24.06.2022 14:44:32
ChrisL
Hi all
Hier ein Vorschlag für die Dynamik:

let
Quelle = Excel.CurrentWorkbook(),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name]  "Abfrage1")),
TabelleTemporaer = Table.AddColumn(#"Gefilterte Zeilen", "Hilfsspalte", each Table.Schema([Content])[Name]),
ListeSpaltentitel = List.Distinct(Table.ExpandListColumn(TabelleTemporaer, "Hilfsspalte")[Hilfsspalte]),
#"Erweiterte Content" = Table.ExpandTableColumn(#"Gefilterte Zeilen", "Content", ListeSpaltentitel)
in
#"Erweiterte Content"
cu
Chris
AW: ... leider so noch nicht asureichend, denn ...
25.06.2022 09:22:27
Heinz
Hallo Liebe Excellenten,
ich habe da noch ein Problem festgestellt.
Mit "speichern und laden" wird das Ergebnis, also die "Abfrage" in Excel übertragen
und automatisch als Tabelle formatiert.
Wenn ich dann PQ noch einmal aufrufe, wird auch
die Abfrage geladen und an meine Tabellen angefügt.
Wie kann ich ausschließen, das die Ergebnisse der Abfragen
wieder in meine Tabelle einfließen?
Heinz
Anzeige
AW: mir noch unklar ...
25.06.2022 09:41:07
neopa
Hallo Heinz,
... was Du genau meinst..
Gruß Werner
.. , - ...
AW: eine prima Lösung ...
25.06.2022 09:42:43
neopa
Hallo Chris,
... vielen Dank Dir dafür. Deine Lösung entspricht genau dem, was ich angestrebt hatte aber nicht umsetzen konnte.
Frage: Wo hätte ich nachlesen können/müssen damit ich vielleicht auch zu diesem gekommen wäre?
Aber ich wünsche Dir jetzt erst einmal ein schönes WE
Gruß Werner
.. , - ...
Tabelle ausschließen
25.06.2022 15:43:38
Heinz
Hallo Liebe Excellenten,
ich habe inzwischen noch eine Tabelle in den Quelldaten mit dem Namen "Regionen".
Wie kann ich ausschließen, dass diese Datei mit in die Abfrage einbezogen wird?
Mein Weg funkt nicht:
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name] "Abfrage1" "Regionen")),
Heinz
Anzeige
AW: dazu musst Du nicht nicht den M-Code ändern ..
25.06.2022 16:00:53
neopa
Hallo Heinz,
... sondern aktiviere einfach im PQ-Editor den Schritt "Gefilterte Zeilen" (unmittelbar nach Schritt "Quelle") und ändere dort interaktiv die Filterung. Anbieten würde sich dazu als Filterung "enthält" und als Text "Tabelle" auszuwählen. Der M-Code bildet sich dafür automatisch zu: = Table.SelectRows(Quelle, each Text.Contains([Name], "Tabelle")) und filtert dadurch nur die Tabellen die im Namen "Tabelle" zu stehen haben.
Gruß Werner
.. , - ...
AW: eine prima Lösung ...
27.06.2022 08:25:31
ChrisL
Hi
@ Heinz
Wie Werner schon beschrieben hat, muss das Abfrageresultat ausgefiltert werden. Vielleicht hilft z.B.: https://www.youtube.com/watch?v=z3PXGn19nfI
@ Werner
Man kann die Aufgabe fast mit Standardmitteln lösen. Gedanklich bin ich danach vorgegangen, habe die Liste aber über Variablen in die Hauptabfrage eingebaut (immer mal was neues).
https://www.herber.de/bbs/user/153775.xlsx
Ein Tutorial habe ich nicht. Ich stöbere einfach durch die PQ-Standardfunktionen und so bin ich bereits früher mal zufällig auf Table.Schema gestossen.
https://docs.microsoft.com/de-de/powerquery-m/power-query-m-function-reference
Und zum Thema Transformationstabellen. Letztlich alles eine Frage der Anforderung. Spätestens wenn man die Spalten ordnen möchte oder eine Typenkonvertierung durchführt, müsste man wissen, welche Datenfelder bezogen werden und eine Transformationstabelle wäre m.E. sinnvoll. Schlussendlich dient eine Abfrage der Auswertung/Reporting und da sollte man ja schon im Voraus wissen, was man auswerten will. Insofern ist meine dynamische Lösung konstruiert/fiktiv, aber es könnte dennoch mal die Anforderung dafür entstehen.
cu
Chris
Quelle:

let
Quelle = Excel.CurrentWorkbook(),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Name]  "Abfrage1"))
in
#"Gefilterte Zeilen"
ListeSpaltennamen:

let
Quelle = Quelle,
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(Quelle, "Hilfsspalte", each Table.Schema([Content])[Name]),
#"Erweiterte Hilfsspalte" = Table.ExpandListColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Hilfsspalte"),
#"Andere entfernte Spalten" = Table.SelectColumns(#"Erweiterte Hilfsspalte",{"Hilfsspalte"}),
#"Entfernte Duplikate" = Table.Distinct(#"Andere entfernte Spalten"),
Hilfsspalte = #"Entfernte Duplikate"[Hilfsspalte]
in
Hilfsspalte
Abfrage1:

let
Quelle = Quelle,
#"Erweiterte Content" = Table.ExpandTableColumn(Quelle, "Content", ListeSpaltennamen, ListeSpaltennamen)
in
#"Erweiterte Content"

Anzeige
AW: "fast" und "stöbern" trifft es gut ...
27.06.2022 10:50:51
neopa
Hallo Chris,
... vielen Dank für Deine zusätzlichen Ausführungen.
Ich hab schon auch ab und zu mal in https://docs.microsoft.com/de-de/powerquery-m/power-query-m-function-reference "gestöbert". Aber man braucht mE wohl schon etwas mehr als Grundkenntnisse in und mit PQ um dort das zutreffende zu finden, für das was man anstrebt. Ansonsten ist es teilweise so wie die Suche von etwas "unbekannten" in einem großen Haufen von Verschiedenen.
Die Verwendungsmöglichkeit der Funktion "In Liste konvertieren" im PQ-Editor hab ich jetzt aber dank Dir nachvollziehe können - also zumindest für dieses von mir erweiterte Beispiel.
Gruß Werner
.. , - ...
Anzeige
gerne...
27.06.2022 11:35:10
ChrisL
Hi Werner
Was würde man wollen, wenn man wüsste was man bräuchte...
Verstehe schon, dass die Suche nach dem "Unbekannten" nicht ganz einfach ist. Andererseits ist es wie mit den Tabellen-Funktionen. Man fängt irgendwo mal an und erweitert dann laufend sein Vokabular. Selbst nach Jahren findet man noch Neues (unbekannte Funktionen oder neue Verwendungszwecke), was die Sache interessant macht. :)
cu
Chris
AW: so gesehen, hast Du auch wieder Recht owT
27.06.2022 14:28:04
neopa
Gruß Werner
.. , - ...
AW: ... leider so noch nicht asureichend, denn ...
25.06.2022 11:35:54
Luschi
Hallo Chris und Werner,
hier mal meine Lösung, wo 3 intelligente Tabellen unterschiedliche Spaltenüberschriften haben, selbst unterschiedlichen Spaltenpositionen sind damit realisierbar.
https://www.herber.de/bbs/user/153756.xlsx
Gruß von Luschi
aus klein-Paris
Anzeige
AW: so aber nicht wirklich dynamisch, denn ...
25.06.2022 15:00:21
neopa
Hallo Luschi,
... Deine Lösung arbeitet offensichtlich mit mit einer zusätzlichen "Übersetzungstabelle". Eine solche ist mit der Lösung von Chris nicht notwendig.
Gruß Werner
.. , - ...
AW: so aber nicht wirklich dynamisch, denn ...
25.06.2022 19:16:58
Luschi
Hallo Werner,
bei der Lösung von ChrisL stehen die Daten der 3 intelligenten Tabellen nebeneinander - bei mir untereinander.
https://www.herber.de/bbs/user/153761.xlsx
Gruß von Luschi
aus klein-Paris
PS: und eine absolute Dynamik der Datenübernahme wird es nie geben, ohne das der Anwender noch ein bißchen Hand anlegen muß.
Anzeige
AW: allerdings ...
26.06.2022 09:09:10
neopa
Hallo Luschi,
... Deine Lösung ist so aber nicht wirklich als dynamisch bezeichnen. Es besteht so mE auch die Gefahr, dass vorhandenen Daten in der Lösung nicht mehr vorhanden sein können bzw. ungewollt zugeordnet sind.
Chris geht berechtigt davon aus, dass nur die Daten (untereinander) zusammengefügt werden, die auch gleiche Spaltenbezeichnung in den Quelldaten haben. Wenn das in den Quelldatentabellen nicht gegeben ist, dann werden verschieden bezeichnete Spaltenwerte auch jeweils in getrennte Datenspalten (nebeneinander) in der Ergebnistabelle gelistet. Dadurch gehen auch keine Daten verloren, wenn zusätzliche Spalten in den Quelldaten hinzukommen oder in den Quelltabellen Spaltennamen anders bezeichnet wurden. Für Deine Lösung muss dafür zuvor zwingend eine statisch exakte Zuordnung definiert werden.
Mit der Lösung von Chris kann man (bei Bedarf) basierend auf dessen Ergebnislisting entweder mit anschließender PQ- Funktionalität oder in nachträglicher Änderung der Spaltenbezeichnung(en) der Quelltabellen eine schrittweise "Nachjustierung" bis zum angestrebten Endergebnis vornehmen.
Deine Lösung will vorgenanntes vermeiden. Aber so wie bisher realisiert, kann man damit aber schnell den Überblick verlieren mit dann ungewollten Ergebnis. Vielleicht solltest Du die Spaltendaten in Konfiguration!A:C zunächst durch PQ erstellen lasen und dann die zugehörigen "Übersetzungs-"Daten in Konfiguration!D:D erfassen wo notwendig ,Danach PQ aktualisieren. So könnte man auch interaktiv Deine PQ-Lösung an die angestrebte Lösung anpassen,
Gruß Werner
.. , - ...
AW: allerdings ...
26.06.2022 13:23:42
Luschi
Hallo Werner,
mit spätestens E_365-PQ mußt Du Deinen Widerstand gegen die sogenannten Übersetzungstabellen (dort heißen sie Transformationstabellen) aufgeben. Da gehören sie zur Standard-Auswahlmöglichkeit beim Verbinden von Tabellen und das nennt sich dann 'Fuzzyübereinstimmungen zum Zusammenführen verwenden' und als Sonderbonus kann man dann 1 Transformationstabelle angeben, die z.B. sowas matcht: de statt Deutschland oder neopa C statt Werner.
Aber auch da wird man gezwungen sein, vorher die Transformationstabelle manuell zu Erstellen, denn es gibt kein 'plug&play'-Mechanismus.
Gruß von Luschi
aus klein-Paris
AW: hab nichts gegen Transformationstabellen, ...
26.06.2022 16:19:21
neopa
Hallo Luschi,
... da wo sie angebracht oder gar notwendig sind. Und wenn diese zumindest teilweise automatisch erzeugt werden (können) dann halte solche durchaus für angebracht und hilfreich. So jedoch wie hier die Aufgabenstellung war, ist die Lösung die Chris aufgezeigt hat für mich optimal.Würde bloß gern wissen, wie er zu dieser Lösung gekommen ist.
Gruß Werner
.. , - ...

43 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige