Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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 - Neue Spalte erstellen

Power Query - Neue Spalte erstellen
08.11.2023 16:01:40
Mikel
Hallo zusammen,

das Forum hier hat mir schon so oft weitergeholfen, ob im Post oder nur zum nachlesen, vielen Dank dafür :-)

Bin jetzt aktuell mit Power Query am experimentieren (tolles Tool) und habe jetzt folgendes Problem:
Ich habe eine Spalte mit einem Artikel, darunter steht die Farbe:

Artikel 1
Farbe 1
null
null
null
Artikel 2
Farbe 2
null
null
null
Artikel 3
Farbe 3
null
null
null


Jetzt würde ich gerne eine neue Spalte generieren, in der die Farbe quasi 1 Zeile höher gesetzt wird... Also neue Spalte mit der Farbe auf gleicher Höhe...


Artikel 1 Farbe 1
null
null
null
null
Artikel 2 Farbe 2
null
null
null
null
Artikel 3 Farbe 3
null
null
null
null

Vielleicht hat ja jemand ne Idee...
Vielen Dank schon mal im voraus und viele Grüße

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: z.B. interaktiv & if ... then ... else ...
08.11.2023 16:21:32
neopa C
Hallo Mikel,

... vorgemerkt: ich bin kein PQ-Profi, deshalb nachfolgend nur eine weitestgehend interaktive Lösung, worin ich Deine angegebenen "null" Werte als Textwerte belassen habe.

(M)ein interaktiv erstellter M-Code lautet dafür:

let

Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Spalte1", type text}}),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Geänderter Typ", "Index", 0, 1, Int64.Type),
#"Hinzugefügter Index1" = Table.AddIndexColumn(#"Hinzugefügter Index", "Index.1", 1, 1, Int64.Type),
#"Zusammengeführte Abfragen" = Table.NestedJoin(#"Hinzugefügter Index1", {"Index.1"}, #"Hinzugefügter Index1", {"Index"}, "Hinzugefügter Index1", JoinKind.LeftOuter),
#"Erweiterte Hinzugefügter Index1" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "Hinzugefügter Index1", {"Spalte1"}, {"Hinzugefügter Index1.Spalte1"}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Erweiterte Hinzugefügter Index1", "neu", each if ([Spalte1]>"null" and [Hinzugefügter Index1.Spalte1] > "null") then [Spalte1]&" "&[Hinzugefügter Index1.Spalte1] else "null"),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Spalte1", "Index", "Index.1", "Hinzugefügter Index1.Spalte1"})
in
#"Entfernte Spalten"


Gruß Werner
.. , - ...
Anzeige
AW: Power Query - Neue Spalte erstellen
09.11.2023 15:21:05
Mikel
Hallo zusammen,

super, ich danke Euch! Es hat wunderbar funktioniert :-)

Eine weitere Frage habe ich noch, wenn ich die Funktion "Werte ersetzen" nutze, dann kann ich immer nur einen Wert ersetzten, oder ?
Als Beispiel : Aus "18" mach "15"

- Table.ReplaceValue(#"Geänderter Typ1","18","15",Replacer.ReplaceText,{"Column1"})


Wenn ich aber jetzt auch noch aus einer "20" eine "10" machen will, dann muss ich das wieder als einzelnen Aufruf machen, oder
gibt es eine Möglichkeit, das Ganze in einer "Zeile" abzuarbeiten ?

Viele Grüße und nochmals danke,
Mikel
Anzeige
AW: was spricht gegen einen zusätzlichen Schritt? ...
09.11.2023 16:10:29
neopa C
Hallo Mikel,

... vielleicht findest Du ja hier https://learn.microsoft.com/de-de/powerquery-m/power-query-m-function-reference dazu was Du suchst.
Ich bin und werde kein PQ-Profi, mir würde der zusätzliche Schritt, welcher ja sehr schnell definiert ist, völlig reichen.

Vielleicht aber kann Dir Luschi mehr Informationen dazu schreiben.

Gruß Werner
.. , - ...
AW: Power Query - Neue Spalte erstellen
09.11.2023 18:20:09
Luschi
Hallo Mikel,

was soll man mit dieser Nachfrage anfangen, die nix mit dem Anfangssituation zu tun hat. Stell bitte 1 Beispieldatei bereit, und es wird Dir gezeigt, wie man das per PQ-M-Code und 1er Excel Austauschtabelle macht.

Gruß von Luschi
aus klein-Paris
Anzeige
AW: z.B. interaktiv & if ... then ... else ...
08.11.2023 20:43:44
Luschi
Hallo Mikel,

hier mal Werner's und meine PQ-Lösung in 1er Beispieldatei: https://www.herber.de/bbs/user/164132.xlsx

Gruß von Luschi
aus klein-Paris

AW: dazu nachgefragt ...
09.11.2023 16:16:16
neopa C
Hallo Luschi,

... Deine Lösung setzt voraus, daß die Artikel auch wirklich mit "Artikel" beginnend beschriftet sind. Dies erscheint mir als wenig wahrscheinlich. Oder?
Die Abfrage2 in Deiner eingestellten Datei dient wozu?

Gruß Werner
.. , - ...
AW: dazu nachgefragt ...
09.11.2023 17:54:46
Luschi
Hallo Werner,

natürlich natürlich kann man 'Artikel' & 'Farbe' dynamisieren:
- per Parameter-Abfrage
- per M-Code, um die Werte der 1. beiden Inhalte der 1. Spalte selbst zu ermitteln
- aber wer will das schon haben?

Gruß von Luschi
aus klein-Paris

PS: Das Ersetzen mehrere Werte durch Austauschwerte geht natürlich per 'M' auch und ich werde dazu noch 1 Post absetzen.

Anzeige
AW: dazu ...
09.11.2023 18:12:34
neopa C
Hallo Luschi,

... ich wollte nur darauf hinweisen, daß Deine eingestellte PQ-Lösung zu "statisch" ist. Wenn z.B. in den Quelldaten anstelle "Artikel #" z.B. nur " Artikel #" steht, wird die dazugehörige Farbe nicht "geholt" und erfahrungsgemäß wird wahrscheinlich noch nicht mal "Artikel" vor eine ´r Art. Nr. voran geschrieben sein.

Gruß Werner
.. , - ...


AW: dazu ...
10.11.2023 08:47:27
Luschi
Hallo Werner,

die Forderung, PQ-Abfragen soweit wie möglich zu dynamisieren, werden wohl nicht nur jeden PQ-Einsteiger überfordern. Aus Spaß an der Freude habe ich 3 dynamische Abfragen erstellt:
- PQ-Luschi_dynamisch_1 & PQ-Luschi_dynamisch_2 setzen voraus, das bei 'Artikel' und 'Farbe' 1 Leerzeichen existiert
  also 'Artikel 1'... und 'Farbe 1'...
- bei PQ-Luschi_dynamisch_3 wird die 1. Position einer beliebigen Ziffer ermittelt

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

Gruß von Luschi
aus klein-Paris

PS: Hier noch die Lösung zum Problem 'Austauschen mehrerer Werte in 1 Spalte': https://www.herber.de/bbs/user/164170.xlsx
Anzeige
AW: will Dir ja nicht den Spaß an der Freude verderben ...
10.11.2023 09:27:08
neopa C
Hallo Luschi,

... aber "dynamisch" (nach meiner Interpretation) ist keine Deiner drei Lösungsangebote. Ersetze doch einfach mal im Quelltext ein (oder auch mehr) "Artikel"-Text durch ein beliebig anderen Text und schon ist der Lack äääh die Farbe ab ;-) Meine "Hausmanns"-PQ-Lösung dagegen macht das, was ich mir unter "dynamisch" vorstelle.

Gruß Werner
.. , - ...
AW: will Dir ja nicht den Spaß an der Freude verderben ...
10.11.2023 13:35:54
Luschi
Hallo Werner,

sorry, aber ich hatte nur eine Vorstufe und nicht die Endversion hochgeladen.

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

Gruß von Luschi
aus klein-Paris
Anzeige
AW: scheint heute nicht Dein Tag zu sein oder? ...
10.11.2023 16:24:32
neopa C
Hallo Luschi,

... was Du nun eingestellt hast, hat immer noch den gleichen Mangel wie in Deinen vorherigen Versionen.

Ändere mal z.B. A26 ab in z.B.: "hmm" und vergleiche mal nach der Aktualisierung Dein Ergebnis mit dem meiner PQ-Abfrage.

Gruß Werner
.. , - ...
AW: scheint heute nicht Dein Tag zu sein oder? ...
15.11.2023 06:17:53
Luschi
Hallo Werner,

so habe ich die Aufgabenstellung nie angesehen, wenn es denn so sein sollte/ist, dann hier meine Lösung (wie immer mehr M als PQ-Standardmöglichkeiten):
// PQ-Luschi_dynamisch_3 (2)

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Spalte1", type text}}),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Geänderter Typ", "Index", 1, 1, Int64.Type),

#"neue Spalte.1" = Table.AddColumn(#"Hinzugefügter Index", "neuer Inhalt",
each
let xx1 = Table.RowCount(#"Hinzugefügter Index"),
xx2 = #"Hinzugefügter Index"[Spalte1]{[Index]},
xx3 = if [Index] = xx1
then "null"
else if xx2 = "null" or [Spalte1] = "null"
then "null"
else [Spalte1] & " - " & xx2
in
xx3),
#"Andere entfernte Spalten" = Table.SelectColumns(#"neue Spalte.1",{"neuer Inhalt"})
in
#"Andere entfernte Spalten"
Gruß von Luschi
aus klein-Paris

Anzeige
AW: jetzt haben wir ein gleiches Ergebnislisting :-) ...
15.11.2023 08:52:27
neopa C
Hallo Luschi,

... nun ist nur noch offen, ob Mikel das auch wirklich genau so haben wollte oder anders.

Gruß Werner
.. , - ...
AW: nun noch zum Datenaustausch ...
10.11.2023 09:50:09
neopa C
Hallo Luschi,

... also wenn nur zwei/drei Zahlen zu ersetzen sind, würde ich nachwie vor einfach ein/zwei Zusatzschritte definieren.

Deine Lösung wird natürlich einem Programmierer eher gerecht als meine folgende Lösung nach Hausmanns-PQ-Lösung:

let

Source = Excel.CurrentWorkbook(){[Name="tab_Daten"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Source,{{"Artikel", type text}, {"Anzahl", Int64.Type}}),
#"Zusammengeführte Abfragen" = Table.NestedJoin(#"Geänderter Typ", {"Anzahl"}, tab_Austausch, {"alter Wert"}, "tab_Austausch", JoinKind.LeftOuter),
#"Erweiterte tab_Austausch" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "tab_Austausch", {"neuer Wert"}, {"tab_Austausch.neuer Wert"}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Erweiterte tab_Austausch", "neue Anzahl", each if [tab_Austausch.neuer Wert]=null then [Anzahl] else [tab_Austausch.neuer Wert]),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "alte Anzahl", each if [tab_Austausch.neuer Wert]=null then null else [Anzahl]),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"Anzahl", "tab_Austausch.neuer Wert"}),
#"Sortierte Zeilen" = Table.Sort(#"Entfernte Spalten",{{"Artikel", Order.Ascending}})
in
#"Sortierte Zeilen"


Bin jetzt gleich erst einmal bis wahrscheinlich heute Abend nicht mehr online.

Gruß Werner
.. , - ...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige