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

PQ: Null-/Leerstellen variabel auffüllen

PQ: Null-/Leerstellen variabel auffüllen
31.05.2023 20:26:41
Chris94

Hallo zusammen,

ich suche eine Möglichkeit, wie ich in meiner Datentabelle innerhalb PowerQuery, das ist leider zwingend notwendig, meine Null- und Leerstellen durch bereits vorhandene Daten in der jeweiligen Row ersetzen kann. Dafür muss der Bereich pro Row lokalisiert werden.

Der Kern:
Wenn zwei gleichartige Zahlen (entweder 1 oder 0,5) innerhalb einer Row in Spalte X oder Y auftauchen, sollen alle Spalten dazwischen mit diesem Wert (1 oder 0,5) aufgefüllt werden.
Alle anderen Spalten werden einfach mit 0 aufgefühlt, die dann noch LEER sind. Auch werden einfach alle anderen Spalten mit 0 aufgefüllt, sollte es keine zwei gleichartige Zahlen innerhalb einer Row geben.


Ich habe eine Beispieldatei beigefügt, ich denke das macht die Sache deutlich klarer.
Dort ist IST und SOLL abgebildet:

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

Bin nicht ganz so drin, aber ich vermute, dass ich eine Funktion in PowerQuery brauche, die das erledigen kann - das kriege ich leider nicht hin.
ChatGPT hilft mir aktuell leider auch nicht, ich habe es wirklich über STUNDEN versucht ...

Falls jemand zur Hilfe bereit ist, würde ich mich wirklich sehr freuen! In der Zwischenzeit versuche ich vllt. zumindest Teilerfolge zu erzielen.

Viele Grüße,
Chris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PQ: Null-/Leerstellen variabel auffüllen
01.06.2023 19:54:01
Luschi
Hallo Chris94,

Dein Problem klingt richtig interessant und ich kann ab morgen (02.06.2023) mich darum kümmern.
Es wird aber nicht so einfach werden, da M-Funktionen definiert werden müsssen, denn mit den üblichen PQ-Menübefehlen ist da nicht viel zu machen, da:
- Zeilen in PQ Records sind
- die in List transformiert werden müssen
- um dann die Transformation durchführen zu können
- und das Ganze wieder zurück schreiben zu können.

Gruß von Luschi
aus klein-Paris


AW: PQ: Null-/Leerstellen variabel auffüllen
02.06.2023 08:30:13
Chris94
Hi Luschi,

danke für deine Nachricht und die Hilfsbereitschaft!

Ich habe gestern eine Nachtschicht eingelegt und eine Lösung gefunden, die aber einem anderen Ansatz folgt, als jenen den ich erst im Kopf hatte.
Ich sag mal so: Es ist die "Amateur-Lösung".

Ich erstelle eine Kopie von jeder Spalte, die mit Leerzeichen sind die "Originale", und gleiche dann bei der ersten Spalte ("3,0") ab, ob irgendwas in der Original-Spalte steht. Dann checke ich bei den fortlaufenden Spalten einfach immer die Spalten mit Index -1 und -2 (ab Spalte #3) sowie teils das Original, um "das Ende" zu finden. Kurz gesagt: einfach ein paar IF-Bedingungen.

Wenn du eine eleganter Lösung hast bzw. noch Lust dazu hast, wäre ich weiterhin interessiert. Ansonsten bedanke ich mich nochmals ausdrücklich für deine Hilfsbereitschaft!!!


sourceTable = RAW,
expandedTable = Table.ExpandListColumn(Table.AddColumn(sourceTable, "3,0", each if [#"3,0 "] = null then 0 else {[#"3,0 "]}), "3,0"),
updatedTable = Table.AddColumn(expandedTable, "3,5", each if [#"3,0"] > 0 then [#"3,0"] else [#"3,5 "], type any),
transformedTable = Table.AddColumn(updatedTable, "4,0", each  if [#"3,5"] > 0 and [#"3,0"] > 0 and [#"3,5 "] > 0 then [#"4,0 "] else if [#"3,5"] > 0 then  [#"3,5"] else [#"4,0 "]),
...
transformedTable17 = Table.AddColumn(transformedTable16, "12,0", each  if [#"11,5"] > 0 and [#"11,0"] > 0 and [#"11,5 "] > 0 then [#"12,0 "] else if [#"11,5"] > 0 then [#"11,5"] else [#"12,0 "]),
#"Entfernte Spalten" = Table.RemoveColumns(transformedTable17,{"3,0 ", "3,5 ", "4,0 ", "4,5 ", "5,0 ", "5,5 ", "6,0 ", "6,5 ", "7,0 ", "7,5 ", "8,0 ", "8,5 ", "9,0 ", "9,5 ", "10,0 ", "10,5 ", "11,0 ", "11,5 ", "12,0 "})
in
#"Entfernte Spalten"
Gruß,
Chris


Anzeige
AW: PQ: Null-/Leerstellen variabel auffüllen
02.06.2023 18:08:34
Luschi
Hallo Chris,

hier mal meine PQ-Lösung: https://www.herber.de/bbs/user/159445.xlsx

Aber nicht erschrecken, denn die darin vorkommenden M-Befehlen kann man über das PQ-Menü nicht erreichen, denn für die Record- und List-Befehle gibt es keine Menü äquivalenten Mausklicks.
Habe aber einige Kommentare reingepackt.

Gruß von Luschi
aus klein-Paris

PS: Der mehrfach vorkommende List.Accumulate-Befehl arbeitet als Schleifenfunktion, wobei der 1. Parameter eine Liste ist, die elementweise abgearbeitet wird - die Variable 'cur' enthält immer das aktuelle List-Element und 'st' das jeweilige Zwischenergebnis, welches im nächsten Schleifendurchlauf das neue Ausgangsobjekt liefert.


Anzeige
AW: PQ: Null-/Leerstellen variabel auffüllen
03.06.2023 08:23:16
Luschi
Hallo Chris,

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

habe beim Testen noch 1 Fehler entdeckt für den Fall:
- es gibt keine 2 doppelten Werte > 0 in 1er Zeile (Record) und beseitigt
- 1e verbesserte Version dazugepackt
- und in 1er weiteren Version die externe Funktion 'fx_ein_DatenSatz' integriert
  in die Hauptabfrage 'tab_Bereich_3'

um die Möglichkeiten von PQ darzustrellen.

Gruß von Luschi
aus klein-Paris

PS: Was noch fehlt, ist die Möglichkleit, daß es mehr als 1 Doppelpaar > 0 pro Record gibt.


Anzeige
@Luschi,ich teste es heute Abend.VielenDANK soweit
05.06.2023 09:21:45
Chris94
.


@Luschi, vielen Dank ...
05.06.2023 17:09:56
Chris94
Hallo Luschi,

ich habe mir deine Lösungen angesehen und auch schon in meine eigentliche Datei eingebunden.Es funktioniert alles tadellos, ich habe keine Szenario gefunden, was auftreten könnte, welches nicht von deinen Lösungen abgedeckt wird.
Du bist da echt interessant herangegangen, das hilft mir sehr weiter.

Ich danke dir wirklich sehr für deine Hilfe!

Liebe Grüße,
Chris

PS: Ich werde vorauss. die Version 2 verwenden :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige