Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Power Query - Zuordnung bei mehreren verschachtelten Bedingungen
#1
Hallo zusammen,

ich bin hier neu.
Und habe natürlich eine Frage, bei welcher ich Eure Hilfe benötige:


Mittels Power Query habe ich bereits einige Aufgaben lösen können.

Jetzt bin ich aber an einem Punkt angelangt, bei dem ich überfragt bin.

Ich habe eine Tabelle. Eine Spalte in der Tabelle, Ausgang, enthält immer 5 Ziffern. Die 5 Ziffern sind ausnahmslos als Text formatiert.

Diesen Ziffernfolgen muss ich in einer weiteren, neuen Spalte einen bestimmten Text zuordnen.

Beispielsweise.

Ziffernfolgen der Tabelle 1, welche mit "81" oder "82" beginnen, sollen in der neuen Spalte den Wert "D12.c" erhalten.

Das konnte ich mit

Code:
= Table.AddColumn(#"Geänderter Typ", "ZKreis", each if Text.StartsWith([Ausgang], "81") then "D12.c" else if not Text.StartsWith([Ausgang], "82") then "D12.c" else null)

Leider gibt es weitere Bedingungen.

Der Wert in der neuen Spalte, ZKreis, soll "D12.b" lauten, wenn die Ziffernfolge in Tabelle 1, Spalte Ausgang
- beginnend zwischen  51 und 54 liegt
- nicht mit 526 beginnt
- nicht mit 5272 beginnt
- nicht mit 5312 beginn
- nicht mit 5320 beginnt
- nicht mit 549 beginnt
- nicht 54645 entspricht.


Was ich machen könnte, wäre z.B.
die ersten beiden Ziffern extrahieren in Zahlen umwandeln und dann prüfen ob zwischen 51 und 54.
Theoretisch zu jeder Einschränkung eine eigene Spalte, dann zusammenfassen und löschen. Das wäre aber EDV zu Fuß.

Für eine sinnvolle Lösung hat mich mein Wissen und können verlassen.

(Die nicht-Einschränkungen können sich in den kommenden Zeiten ändern.)

Es gibt zwar noch D12.a. Aber das lässt sich aus der Lösung für D12.b ableiten.

Bevor die Frage aufkommt, wo kann so etwas wirres als Bedingungen herkommen: Volljuristen.  Big Grin


Vielen Dank schon einmal für jegliche Hilfe

Euer
Wolf-Tilmann
Zitieren
#2
Hallo ihr Volljuristen,

ich denke nicht, dass dies mit PQ so einfach umzusetzen ist.

Mit VBA geht es aber.

Eine kleine Beispieldatei mit einigen Spieldaten inklusive dem gewünschten Ergebnis könnte beim Helfen helfen.
_________
VG Sabina
Zitieren
#3
Hi,

mit normaler Formel:

Code:
=WENN(ODER(--LINKS(A1;2)={81;82});"D12.c";WENN(ODER(--LINKS(A1;2)={51;52;53;54})*UND(--LINKS(A1;3)<>{526;549})*UND(--LINKS(A1;4)<>{5272;5312;5320})*(A1<>"54645");"D12.b";""))
Gruß


Edgar
Zitieren
#4
Geht auch in PQ mit einer if:

l
Code:
let
    Source      = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    Change_Type = Table.TransformColumnTypes(Source,{{"Ausgang", type text}}),
    Col_ZKreis  = Table.AddColumn(Change_Type, "Zkreis", each
                  if Text.StartsWith([Ausgang], "526")   or
                     Text.StartsWith([Ausgang], "5272")  or
                     Text.StartsWith([Ausgang], "5312")  or
                     Text.StartsWith([Ausgang], "5320")  or
                     Text.StartsWith([Ausgang], "54645") or
                     Text.StartsWith([Ausgang], "549")   then "" else
                  if Text.StartsWith([Ausgang], "51")    or
                     Text.StartsWith([Ausgang], "52")    or
                     Text.StartsWith([Ausgang], "53")    or 
                     Text.StartsWith([Ausgang], "54")    then "D12.b" else
                  if Text.StartsWith([Ausgang], "81")    or
                     Text.StartsWith([Ausgang], "82")    then "D12.c" else "")
in
    Col_ZKreis

Es geht natürlich auch mit einer Mapping Tabelle. Da mir hierzu jedoch nur eine suboptimale Lösung eingefallen war, habe ich mir die bessere durch chatGPT erstellen lassen.


Angehängte Dateien
.xlsx   Microsoft Office Forum - Power Query - Zuordnung bei mehreren verschachtelten Bedingungen.xlsx (Größe: 23,5 KB / Downloads: 2)
Zitieren
#5
@ ws-53


Vielen Dank.

DAS ist es.

Toll!!

Einen schönen Tag noch
Wolf-Tilmann
Zitieren
#6
Hi,

ist zwar schon ein paar Tage her, hab es aber erst jetzt entdeckt.
Bei mehreren Optionen ist es meines Erachtens nach sinnvoller Listen zu verwenden. Das ist übersichtlicher und macht nachträgliche Ergänzungen/Änderungen einfacher, weil einfach nur die Liste angepasst werden muss.

Mein Vorschlag wäre:

PHP-Code:
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ", "Zkreis", each
    if Text.StartsWith( [Nr],"81" ) or Text.StartsWith( [Nr],"82" then //Bei dieser Prüfung muss jede Bedingung einzeln mit or geprüft werden... ungünstig
        "D12.c"
    else
//Besser wäre es, eine Liste der Bedingungen zu formulieren
        if List.Contains({"51","52","53","54"},Text.Middle([Nr],0,2)) then
            
if List.Contains({"5272","5312","5320"},Text.Middle([Nr],0,4)) then
                
"4er, der weg muss"
            else
                if List.Contains({"549","526"},Text.Middle([Nr],0,3))  then
                    
"3er, der auch weg muss"   
                
else
                    "Irgend'n anderer Text"
        else
            "Beginnt nicht mit 51 bis 54 oder 81 oder 82"
    ), 
Zitieren
#7
Mit PHP hätte ich es auch hinbekommen.
Leider MUSS es Ecel OHNE VBA sein :-)
Zitieren
#8
Hallo,

... oh je Cool  ... PHP ist nur der Rahmen ... dadurch wird nur alles ein wenig bunter.

Der Code ist ganz einfacher Power-Query-Code ... kein VBA.
Könnte man an den Bezeichnern erkennen ... wenn man mal aufmerksam drüber schaut.

Aber macht ja nichts ... ich hab auch einen Volljurist zu Hause ... eigentlich hat ja er mich ... egal.

Ich hab auf jeden Fall Verständnis für deine Denke. Smile
_________
VG Sabina
Zitieren
#9
...da hat die Sabina vollkommen Recht... es ist M-Code für Power Query, der für den Schritt "Col_ZKreis" aus dem Beispiel von @ws-53 genommen werden kann.
Hatte zur Kennzeichnung des Codes im Foreneditor PHP ausgewählt, deshalb steht da PHP...
Zitieren
#10
Au. - ich kaufe mir eine neue Brille ....

Vielen Dank

Ich baue es in meine Abfragen ein


Eine schöne Woche
Wolf-Tilmann
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions