Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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

Power Query
15.10.2023 13:19:29
Matthias Kirsch
Liebe alle,

Als absoluter Neuling wäre ich dankbar für Anweisungen darüber, wie man Power Query und den zugehörigen Editor für das folgende Problem verwendet:

Ich habe einen Ordner mit .txt-Dateien, von denen jede aus einer einzelnen Spalte von Daten ohne Überschrift besteht. Diese sollten in ein einziges Excel-Arbeitsblatt kombiniert werden, wobei die Dateinamen als Spaltenüberschriften dienen sollten und jede Spalte die Daten aus einer einzelnen Datei enthält.

Bisher habe ich es nur geschafft, die Dateien zu kombinieren, um eine einzige Spalte von Daten zu erhalten: Die erste Spalte enthält den Namen der txt-Datei, der so oft wiederholt wird, wie es Datenzeilen in der Datei gibt.

Ich möchte jedoch den Inhalt der einzelnen Daten spalten aus jeder Datei in separaten Spalten im resultierenden Arbeitsblatt haben (nur ein Arbeitsblatt mit so vielen Spalten, wie es txt-Dateien gibt).

Idealerweise sollte dieses Arbeitsblatt jedes Mal aktualisiert werden, wenn ich eine neue txt-Datei zum Quellordner hinzufüge.

Ich hoffe, ich habe das Problem klar genug dargelegt, damit jemand da draußen eine funktionierende Lösung bereitstellen kann.

Im Voraus vielen Dank und alles Gute,

Matthias

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query
15.10.2023 13:30:25
Jan
Hallo

Wie wäre es mit einer Testdatei und einem Wunschergebnis und natürlich die Ergebnise die du bisher hast.
AW: Power Query
15.10.2023 14:52:13
Matthias Kirsch
O.k., ich versuche das zusammenzustellen.

Gruß
AW: Power Query
15.10.2023 15:13:51
Matthias Kirsch
Hallo Jan,

ich habe mal ein zip-Archiv hochgeladen (163448.zip).
Darin befinden sich 3 Beispieldateien .txt mit jeweils 5 Zeilen Daten. In Wirklichkeit sind es mehrere hundert, mit 10-500 Zeilen Daten. Wäre ohne Power Query viel copy und paste ;-)
Weiterhin eine Excel-Datei, mit dem, was ich bisher hinbekommen habe und im gleichen Arbeitsblatt das, was ich gerne hätte. Ich hoffe das ist so aufschlussreich.

Danke und schöne Grüße,
Matthias
Anzeige
AW: dazu ist es jedoch erforderlich, ...
15.10.2023 15:30:09
neopa C
Hallo Matthias,

...das Du nach den Upload Deiner Datei den angezeigten schwarz hinterlegten Link (in weißer Schrift) zu kopieren und danach in die Texteingabemaske "zurückzugehen" und den Link dort einzukopieren. Den Upload müßtest Du nun nochmal (evtl. mit einem geänderten Dateinamen) vornehmen.

Gruß Werner
.. , - ...
AW: dazu ist es jedoch erforderlich, ...
15.10.2023 16:49:10
Jan
Hallo

Habe mir das ganze angeschaut.
Mit deinem manipulierten "Column1" ist so was meiner Meinung nicht möglich, ist Müll txt Dateien.
Aus Müll kann man nix vernüpftiges hinbekommen.
Wenn es etwas vernüpftiges Wäre deine txt Dateien wäre es problemlos möglich mit pivotieren.
Anzeige
AW: dazu ist es jedoch erforderlich, ...
15.10.2023 17:07:37
Matthias Kirsch
nun das verstehe ich nun aber nicht. Die 3 Text-Dateien enthalten doch keinen Müll, sondern in diesem Fall Namen von Genen. Die Spalte hat aber keinen Header, weshalb als Resultat der Abfrage und Kombination nur Column1 als Überschrift auftaucht.
Bisher habe ich aber leider noch keine Vorschläge zur Lösung dieses einfachen (?) Problems erhalten. Schade eigentlich.

Gruß,
Matthias
AW: eine PQ-Lösung sollte möglich sein, allerdings ...
15.10.2023 19:51:27
neopa C
Hallo Matthias,

... wird es zumindest für mich keine leichte Angelegenheit, da ich mich zumindest diesbzgl. noch als PQ- Einsteiger sehe.
Ich schau mal was mir möglich ist. Dies dann allerdings frühestens morgen.

Gruß Werner
.. , - ...
Anzeige
AW: dazu ist es jedoch erforderlich, ...
15.10.2023 21:39:44
Jan
Hallo Matthias

Erstmals muss ich mich bei dir entschuldigen von eben deine txt Dateien waren schon in Ordung.
War eben was sauer von einem anderen Beitrag aus dem Forum hier, da hatte nur deine Datei probiert da gings eben nicht.
Jetzt habe ich es ganz Neu gemacht und Trick17 überlegt nun geht es auch so wie du es gewünscht.
Denn ich wollte mein Wissen nicht ganz wegwerfen und habe neue Weg überlegt.
Datei entzippen wohin du möchtest.
In dem entzippten Ordner müssen alles so bleiben wie es jetzt ist.
Was gemacht werden darf ist die 3 txt Dateien ausgetauscht werden.
Es sollten immer nur 3 txt Dateien sein.
Sollten es mehr sein gib es die Lösung nur per Mail nur von dir.


https://www.herber.de/bbs/user/163460.zip
Anzeige
AW: zumindest in meiner XL2016 so leider nicht lauffähig ...
16.10.2023 09:03:38
neopa C
Hallo Jan,

... möglicherweise weil ich kein LW E: gemappt habe?
Jedenfalls komme ich dadurch nicht dazu Deine Abfragen zu bearbeiten.
Der TE hat auch XL201.

Gruß Werner
.. , - ...
AW: dazu ist es jedoch erforderlich, ...
16.10.2023 10:50:50
Jan
Hallo Matthias

PS:
Was ich vergessen habe wichtiges noch zuerwähnen alle solche Dateien von Massenimport die du erstmalig vom Netz holst müssen zwingend erstmalig zwei bis drei mal Aktualisiert werden erst dann laufen sie erst.
AW: nachgefragt ...
16.10.2023 12:24:27
neopa C
Hallo Jan,

... meinen Beitrag von 9:03 hast Du übersehen? Oder?

Gruß Werner
.. , - ...
AW: dazu ist es jedoch erforderlich, ...
16.10.2023 14:08:20
Luschi
Hallo Jan (alias Eifeljoi5, Hilfesuchender_1),

- was soll das denn werden, wenn es fertig ist?
- geschützter PQ-M Code
  und weitere Lösungen nur per Mail - ja geht's noch?
- Ich habe mir erlaubt, den eingebauten Arbeitsmappenschutz rauszuschmeißen
  und das ausgeblendete Tabellenblatt wieder sichtbar gemacht
- da der Pfad zu den Textdateien im PQ-Code der Abfrage 'Beispieldatei' als Textkette festgetackert ist,
  kommt da natürlich 1 Fehler, wenn die Dateien in 1 anderen Pfad liegen.

Hier mal die entsperrte xlsx-Datei mit kleinen Korrekturen: https://www.herber.de/bbs/user/163479.xlsx

Gruß von Luschi
aus klein-Paris





Anzeige
Ich möchte auch mitspielen
16.10.2023 20:13:41
Yal
darf ich?

Ich habe die Idee von vorher implementiert: pro Datei alle Zeile Semikolon-getrennt in einer Spalte, das macht die Funktion "Datei transformieren":

let

Quelle = (Parameter1 as binary) => let
Quelle = Table.FromColumns({Lines.FromBinary(Parameter1, null, null, 1252)}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(Quelle, "Benutzerdefiniert", each 1),
#"Gruppierte Zeilen" = Table.Group(#"Hinzugefügte benutzerdefinierte Spalte", {"Benutzerdefiniert"}, {{"Zusammmengefasst", each Text.Combine([Column1], ";")}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Gruppierte Zeilen",{"Benutzerdefiniert"})
in
#"Entfernte Spalten"
in
Quelle

Ein Bischen merkwürdig ist, dass die Gruppierung erfordert, dass eine Gruppierung-Spalte vorhanden ist. Ich habe daher eine "Benutzerdefiniert" eingeführt, mit alle Zeile = 1. Und nach der Gruppierung, inkl. Text.Combine, wieder gelöscht.

Die Funktion wird in der Dateiliste gerufen, die Semikolon-getrennte Text in Spalten erweitert, transponiert und die erste Zeile als Überschrift übernommen:
let

Quelle = Folder.Files(Excel.CurrentWorkbook(){[Name="cPfad"]}[Content]{0}[Column1]),
FilterNoHidden = Table.SelectRows(Quelle, each [Attributes]?[Hidden]? > true),
FilterNurTxt = Table.SelectRows(FilterNoHidden, each [Extension] = ".txt"),
FilterNurAktDateien = Table.SelectRows(FilterNurTxt, each Date.IsInCurrentWeek([Date modified])),
FctDateiTrafo = Table.AddColumn(FilterNurAktDateien, "Datei transformieren", each #"Datei transformieren"([Content])),
#"Andere entfernte Spalten" = Table.SelectColumns(FctDateiTrafo,{"Name", "Datei transformieren"}),
#"Erweiterte Datei transformieren" = Table.ExpandTableColumn(#"Andere entfernte Spalten", "Datei transformieren", {"Zusammmengefasst"}, {"Zusammmengefasst"}),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Erweiterte Datei transformieren", "Zusammmengefasst", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv) ),
#"Transponierte Tabelle" = Table.Transpose(#"Spalte nach Trennzeichen teilen"),
#"Höher gestufte Header" = Table.PromoteHeaders(#"Transponierte Tabelle", [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"Astrocyte.txt", type text}, {"Bergmann.txt", type text}, {"CerebGranule.txt", type text}})
in
#"Geänderter Typ"

Das Quellverzeichnis habe ich in einer benannte Excel-Zelle "cPfad" reingepackt, sodass hier ein bischen Flexibilität gibt.

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

VG
Yal

Anzeige
Mist, übersehen...
16.10.2023 20:17:08
Yal
die letzte Zeile "#"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"Astrocyte.txt", type text}, {"Bergmann.txt", type text}, {"CerebGranule.txt", type text}})" muss weg, weil diese ist an dem Anzahl von Spalten gebunden. Ausserdem ist es nicht relevant, dass die Ergebnisspalten Text sind.

AW: nachgefragt ...
17.10.2023 09:21:47
neopa C
Hallo Yal,

... Deine Datei hatte ich zunächst in das gleiche Verzeichnis einkopiert, wo ich Luschis Datei und die Txt-Dateien zu stehen habe. Natürlich wurden da zunächst Fehlermeldungen beim Anzeigen der Abfragen gebracht. Aber auch nach entsprechender Abänderung des Zelleintrages in B1 und Aktualisierung änderte sich dies nicht. Der Parameter wurde offensichtlich nicht übernommen. Auch wenn ich die Ordnerstruktur C:tempH_Forumtextdateien angelegt habe und Deine Originaldatei von dort oder einem anderen Verzeichnis aus aufgerufen habe. kommt die für mich nicht behebbare Fehlermeldung. Woran kann das liegen? Ich nutze XL2016.

Gruß Werner
.. , - ...
Anzeige
AW: Ich möchte auch mitspielen
17.10.2023 00:50:03
Jan
Hallo

Klar darfst du mitspielen, hier macht sowie so jeder was will.
Deine Lösung ist auch eine schöne, sie entspricht fast der Lösung die ich absichtlich nicht hier hoch geladen habe.
Grund der Absicht war gegen neopa C weil er nur am Motzen ist das der TE dies bestimmt nicht so gewollt hat usw .........
Dies ist nicht nur hier so in diesem Beitrag ist auch in vielen anderen die ich schon so gelesen habe der Fall.
Seine Formeln wären angeblich beser als PQ, Formeln machen in meinen Augen nur Sinn wenn man die ganz ganz neuen benutzt und nicht die aus dem Weltkrieg.
Jetzt ist ja auch bekannt das Luschi auch einer von mehreren hier die das Ganze immer wieder knacken.
Ich habe nix gegen Luschi im gegen Teil bei PQ habe ich viel von ihm gelernt, das gelernte setzte ich nur für mich ein und niemals im Forum.
Anzeige
AW: Ich möchte auch mitspielen
17.10.2023 11:28:04
Matthias Kirsch
Lieber Yal,

zunächst erst mal Danke für Deinen Vorschlag. Wenn ich's richtig verstanden habe, kann ich einfach die von Dir angehängte Datei nutzen und auf "Alle aktualisieren" klicken.
Alllerdings funktioniert das bei mir nicht. Ich bekomme den folgenden Fehler:
Expression.Error: Die Spalte "Astrocyte.txt" der Tabelle wurde nicht gefunden.
Details:
Astrocyte.txt

Mit welcher Version von Excel arbeitest Du? Ich habe 2016. Vielleicht funktionierte s deshalb nicht.

Danke und Grüße,
Matthias
AW: da sind wir nun schon zwei ...
17.10.2023 15:16:19
neopa C
Hallo Matthias,

... die den selbe Fehlermeldung erhalten und dies in unserer beiden gleichen XL-Version.

Gruß Werner
.. , - ...
Anzeige
AW: Ich möchte auch mitspielen
18.10.2023 19:41:46
Jan
Hallo

Yal und auch meine Datei laufen problemlos getestet auch Excel 2016.
Der TE ist bestimmt nicht mehr an mehr Hilfe interessiert da er im Nachbarforum schon positive Nachricht abgegeben.
AW: Ich möchte auch mitspielen
18.10.2023 20:05:35
Matthias Kirsch
Liebe Alle,
Ich habe mittlerweile ein wenig den Faden verloren und leider hier noch keine Lösung bekommen, die auf der Basis meiner Kenntnisse funktioniert.
In einem anderen Forum habe ich, fertig zum Kopieren und Verwenden eine 3- zeilige Lösung bekommen, mit der das, was ich will, wie am Schnürchen geht.
Ich weiß natürlich, dass ich von nix eine Ahnung habe, habe aber das Gefühl, dass hier auch Anderes mitschwingt. PQ scheint ausgesprochen komplex zu sein und wie mich gibt es wohl ganz Viele, die wissen, daß sie damit Zeit sparen können, das aber nicht in die Tat umsetzen können.
Never mind, danke Euch allen, bis zum nächsten Problem.
Gruß,
Matthias

P.S.: was bedeutet TE?
AW: Ich möchte auch mitspielen
18.10.2023 20:12:34
SF
Das freut uns natürlich alle für dich!
Schön dass du woanders auch gefragt hast ohne das mitzuteilen. Nennt sich CP und heißt Crossposting, noch ne Abkürzung.
Noch schöner ist, dass du die Lösung hier nicht mitteilst oder zumindest mal ins andere Forum verlinkst.

TE heißt übrigens Threadersteller, also du.
AW: Ich möchte auch mitspielen
18.10.2023 22:21:27
Yal
Hallo Matthias,

im Prinzip ist Power Query ein "low code/no code" Transformationstool, spricht alles sollte per Klicks einzurichten. Manche Lösungen, die von Standard abweichen, brauchen natürlich mehr Erfharung. Ich wurde daher Dir empfehlen, so viel wie möglich mit Power Query zu beschäftigen. Da bekommt man viel für wenig Anstrengung.

Auf einer 3-zeiligen Lösung, die man selbst versteht und bei Bedarf selbst weiterentwickeln kann, bin ich sehr gespannt :-)

Und ja, von der Animosität distanziere ich mich ebenfalls: jemand hat eine Frage und entweder haben die Beitragenden ein Interesse an der Frage oder an der Lösung. Und wenn ein anderen Beitragende auch eine Lösung hat, dann beglückwünscht man anstatt sich gegenseitig anzugiften. Der Doofen als doof zu bezeichnen, hat nie den Doofen weniger doof gemacht. Respekt und Anstand lassen sich eher propagieren.

VG
Yal
AW: Ich möchte auch mitspielen
19.10.2023 08:44:49
Matthias Kirsch
Hi Yal,

ich werde mich sicherlich bemühen, mehr Erfahrung mit PQ zu sammeln. Allerdings muss ich mich parallel auch in R einfuchsen, was ich auch für meine Arbeit brauche, und habe eigentlich für nix genug Zeit, auch wenn das am Ende eine enorme Zeitersparnis bedeutet. Deshalb bin ich ja so froh und dankbar, dass es diese Foren gibt. Bislang habe ich da ausschließlich gute Erfahrungen gemacht.
Hier das, was ich von https://community.fabric.microsoft.com/ bekommen habe. Verstehe im Moment nur Bahnhof, aber was nicht ist, kann ja noch werden.

let
Quelle = Folder.Files("C:UserskirschDesktoptext"),
custom1 = Table.FromColumns(List.Transform(Quelle[Content], each Lines.FromBinary(_)),Quelle[Name])
in
custom1

Alles Gute,
Matthias
AW: Ich möchte auch mitspielen
20.10.2023 08:54:54
Yal
Hallo Matthias,

verbringe lieber deiner Zeit mir R als mit Power Query, es wird dich beruflich viel weiter bringen.
Power Query kannst Du übrigens auch unter Power BI verwenden. Dort kannst Du ebenfalls R und Python verwenden.


Dein Code
let
Quelle = Folder.Files("C:\Users\kirsch\Desktop\text"),
custom1 = Table.FromColumns(List.Transform(Quelle[Content], each Lines.FromBinary(_)),Quelle[Name])
in
custom1

kannst Du auf deutsch lesen:
im Verzeichnis C:\..\text nehme alle Datei (bzw. Dateiinformation) in die Table "Quelle"
aus den Spalten, für jede Zeile extrahiere aus Quelle[Content] die Zeilen aus dem Binary ("_" ist ein selbstreferenzierung) und die Dateiname

Da hast damit am Ende alle Dateiinformationsspalten, dann eine Spalte wo nur "Table" zusehen ist (worauf weitere Verarbeitung möglich ist). In jede diese Table ist der Inhalt der jeweilige Datei und die Dateiname vorhanden.

VG
Yal
AW: Ich möchte auch mitspielen
18.10.2023 20:44:21
Matthias Kirsch
Ich bin an schnellen Lösungrn interessiert, die ich für meine tägliche Arbeit einsetzen kann. Deshalb shoppe ich auch in anderen Foren. Damit habe ich in der Vergangenheit, auch hier, gute Erfahrungen gemacht. Was ich nicht brauche ist, in Animösitäten hinein zu geraten
Die Lösung poste ich gerne morgen. Ich habe da momentan keinen Zugriff.

Danke Euch allen,
Matthias
AW: Ich möchte auch mitspielen
18.10.2023 21:10:31
SF
Sozialkompetenz ist halt nicht jedem gegeben.
Fehler, weil...
18.10.2023 09:40:31
Yal
Hallo zusammen,

mit der Bitte, wenn von einem Fehler die Rede ist, diese Fehler vollständig zu benennen (Plus-Punkte für Matthias ;-). Es gibt Beiträge in allen Richtungen und es fehlt mir schwer, sicher zu sein über welche Fehler gerade gesprochen wird. Vielen Dank.

Ich habe eine Zeile zu viel in dem Code meines Beitrags https://www.herber.de/cgi-bin/eachthread.pl?idx=1949603#1949805 Nicht absichtlich: PQ fügt gern Optimierung nach, in dem Fall die Typfestellung nach dem Beförderung der erste Zeile als Header. Diese Aktion wird Anhand der Spaltennamen angelegt. Da diese Namen die Dateinamen sind, wäre diesen Code nicht universell genug. Ich habe den Fehler in https://www.herber.de/cgi-bin/eachthread.pl?idx=1949603#1949806 jedoch die Datei nicht angepasst. Möge meine Faulheit verzeiht werden.

Aber es gibt noch eine Zeile, die überflüssig ist: da ich mit einem vorhandenen Verzeichnis, wo andere .txt vorliegen, habe ich kurzerhand eine
FilterNurAktDateien = Table.SelectRows(FilterNurTxt, each Date.IsInCurrentWeek([Date modified])),
dazwischen platziert. Spricht, nur die Dateien der aktuelle Woche. Diese BEschränkung ist in ein normalen Fall nicht notwendig und sogar eventuell störend.

xl-Version: zwar kommt es zu einer Meldung, wenn man unter Excel 2016 in PQ öffnet, die unter 365 entstanden ist, aber in 99,9% der Fälle gibt es keine Auswirkung. Ich habe noch nicht entdeckt, welcher Teil von PQ "nur" 365-tauglich wäre.

VG
Yal
AW: die Lösung kann ich zumindest in Augenschein nehmen, ...
16.10.2023 17:14:56
neopa C
Hallo Luschi,

... wozu offensichtlich auch Deine "kleinen" Korrekturen beigetragen haben.
Den Lösungsweg kann ich nun teilweise nachvollziehen. Aber aufstellen hätte ich diese Lösung nicht und geschweige die, die Matthias wirklich anstrebt. Er möchte ja nämlich eine dynamische Lösung. D.h. wenn weitere Textdateien im Pfad hinzukommen, daß diese dann automatisch berücksichtigt werden, also zumindest nach Betätigung des Aktualisierungsicons.

Gruß Werner
.. , - ...


AW: dazu ist es jedoch erforderlich, ...
17.10.2023 12:30:33
Matthias Kirsch
Hallo Luschi,

ich bekomme beim Aktualisieren Deines Vorschlags den Fehler:
[Expression.Error] 5 Argumente wurden an die Funktion übergeben, erwartet wurden jedoch zwischen 2 und 4.
Außerdem schaffe ich es nicht den Code im PQ-Editor anzuschauen.

Hätte nicht gedacht, dass das mit PQ so schwierig ist. Wenn ich in die Tutorial Videos schaue, kann man den Eindruck gewinnen, das wäre die Wunderwaffe für fast alles ;_).
Ist das Problem vielleicht, dass die Spalten in meinen dateien keinen Header haben?

Danke,
Matthias
nur eine Anregung
16.10.2023 09:41:04
Yal
Hallo zusammen,

ich habe nur den Thread überflogen und die Datei nicht angeschaut. Jedoch...

PQ wird die Dateien einzel in einer separaten Funktion behandeln, anschliessend alle Funktionsergebnis "übereinander" in der Hauptabfrage stapeln. Ich denke, man muss die Ergebnisse einer Datei in einer Zeichenkette packen, so dass die Funktion nur 1 Spalte zurückgibt (ein festes, vorhersehbares Anzahl an Spalten ist es PQ am liebsten), dann in der Hauptabfrage aus diese Ketten Spalten erzeugen und das gesamt (die Dateiname war schon vorher bestandteiil der Abfrage) transponieren und die Erste Zeile (Dateiname) als Spaltenüberschrift übernehmen.

Eine andere Lösung wäre pro behandelte Datei die Dateiname als Spaltenüberschrift zu platzieren (Doppelklick auf die Dateiname, so hat man den Code der angewendete Schritt. Code zurseite stellen und Schritt löschen. Spaltenname per Hand ändern und in der entstandene Code den zurseite gelegte "Dateiname" reinbringen).
Dieser Weg hat aber das Problem, dass PQ sich sehr schwer tut, Spalten aus verschiedene Quellen (in dem Fall benutzerdefinierte Funktion) nebeneinander zu stellen.

Aber nebenher habe ich Schwierigkeit zu verstehen, woran das Mehrwert bestehen soll, Spalten von Genen nebeneinander darzustellen, weil mehr als eine kompakte Darstellung ist es nicht. Wenn es darum geht, PQ kennenzulernen, highly welcome.

VG
Yal


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige