Clever-Excel-Forum

Normale Version: Power Query - Erweiterung bedingte Spalte, mehrere Bedingungen gleichzeitig prüfen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich stehe vor einem Problem, dass ich bislang noch nicht lösen konnte.

Mir liegen Prüf-, Messdaten vor deren Werte wie hier in der Spalte [Nummer) dargestellt ausfallen können. Für weitere Auswertungen sind aber nur die Daten von Bedeutung die mit den Zahlenwerten in den Hilfsspalten 1 - 6 beginnen. Wenn diese Bedingung erfüllt ist, soll zunächst hinten dann in der Benutzerdefinierten Spalte "Prüfen" oder "nicht benötigt" ausgegeben werden.

Nummer           Hilfsspalte1              Hilfsspalte2                 Hilfsspalte3            Hilfsspalte4                Hilfsspalte5           Hilfsspalte6            Benutzerdefiniert
1711111111   171                           172                              173                         174                             160                        161                         Prüfen
6754274567   171                           172                              173                         174                             160                        161                         nicht benötigt
0160457298   171                           172                              173                         174                             160                        161                         nicht benötigt
2345678          171                           172                              173                         174                             160                        161                         nicht benötigt
1711111111   171                           172                              173                         174                             160                        161                         Prüfen
1717274567   171                           172                              173                         174                             160                        161                         Prüfen
1754565467   171                           172                              173                         174                             160                        161                         nicht benötigt
4444444444   171                           172                              173                         174                             160                        161                         nicht benötigt


Soweit so gut. Das funktioniert mit der Ziffernfolge aus Hilfsspalte 1 ja auch problemlos.

Um aber die anderen Ziffernwerte auch abgleichen zu lassen, sollte es doch eine Möglichkeit geben dies auf "einen Rutsch" prüfen zu lassen. Soll heißen wenn eine "Nummer" mit einem Wert aus den Spalten beginnt, sollte hinten "Prüfen" stehen.

Ich habe es mit Power Query versucht, jedoch muss ich dann eine Unmenge an einzelnen Bedingungen erstellen. Ich habe auch versucht die Werte mit der Pipe " | ", "or", ";
" ... als Bedingungswert einzufügen, klappt alles nichtSad

Mein nächster Ansatz war im "erweiterten Editor" 

let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Nummer", type text}, {"Hilfsspalte1", type text}, {"Hilfsspalte2", type text}, {"Hilfsspalte3", type text}, {"Hilfsspalte4", type text}, {"Hilfsspalte5", type text}, {"Hilfsspalte6", type text}}),
    #"Hinzugefügte bedingte Spalte" = Table.AddColumn(#"Geänderter Typ", "Benutzerdefiniert", each if not Text.StartsWith([Nummer], [Hilfsspalte1]) then "nicht benötigt" else "Prüfen"),
    #"Hinzugefügte bedingte Spalte" = Table.AddColumn(#"Geänderter Typ", "Benutzerdefiniert", each if not Text.StartsWith([Nummer], [Hilfsspalte2]) then "nicht benötigt" else "Prüfen"),
   
andere Variante
    #"Hinzugefügte bedingte Spalte2" = Table.AddColumn(#"Geänderter Typ", "Benutzerdefiniert1", each if not Text.StartsWith([Nummer], [Hilfsspalte2]) then "nicht benötigt" else "Prüfen"),
    #"Gefilterte Zeilen" = Table.SelectRows(#"Hinzugefügte bedingte Spalte", each true)
in
    #"Gefilterte Zeilen"


durch Copy&Paste die Daten zu ergänzen, das hat aber auch nicht funktioniert.
Es folgte die Fehlermeldung, dass Die Variable mit der Bezeichnung "Hinzugefügte bedingte Spalte" in diesem Bereich bereits definiert ist.
Ich möchte noch anfügen, dass ich mit der Syntax von "M" nicht bzw. noch nicht vertraut bin.

Bei der zweiten Variante erkennt der "erweiterte Editor" zwar keine Syntaxfehler, aber es wird keine weitere Benutzerdefinierte Spalte ausgegeben

Gibt es für mein Problem eine Lösung?
Kann ich die "Funktion der "Bedingten Spalte" irgendwie erweitern, dass zeitgleich mehreren Optionen geprüft/abgeglichen werden?


Vielen Dank für eure Bemühungen und hoffentlich Unterstützung bei der Lösung des Problems bereits im Voraus.


LG Torsten
Moin

Warum nicht einfach so?
Die Spalten E und F beinhalten das Ergebnis.
Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEF
1Nummer   NummerNummer   Index
2171111111117117111111111
367542745671721604572983
416045729817317111111115
5234567817417172745676
61711111111160
71717274567161
81754565467
94444444444
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
Hallo,

wenn du das mit PQ lösen möchtest, zwei Tabellen verwenden (Messwerte, Vergleichswerte) , die du dann zusammenführst.

s. Anlage
Guten Morgen,

und zunächst ein dickes Dankeschön für die Lösungs-Vorschläge und Unterstützung.

Neben der unmittelbaren Problembeseitigung, war mein Anliegen aber auch die Fragestellung, ob die Möglichkeiten der "Bedingten Spalte" ggf. modifiziert und erweitert werden können und eben nicht nur eine Bedingung erfüllt wird, sondern mehrere Bedingungen zusammengebaut werden können, um dann ein Ergebnis zu bekommen.

Entweder durch die Möglichkeit mehrere Werte in das Bedingungsfeld einzufügen, Beispiel:

Wenn [Spalte A]  - beginnt mit (123 & 456 & 789) - dann [Spalte F] - prüfen
Wenn [Spalte A]  - beginnt mit (123 ; 456 ; 789) - dann [Spalte F] - prüfen
Wenn [Spalte A]  - beginnt mit (123 | 456 | 789) - dann [Spalte F] - prüfen

oder

Wenn [Spalte A]  - beginnt mit (123 or 456 or 789) - dann [Spalte F] - prüfen

oder eben wie bereits in der Ursprungsanfrage angedeutet, dass in "M" (Erweiterter Editor) durch Hinzufügen von weiterer(n) Bedingung(en) die Möglichkeiten ausgebaut werden.

Allerdings fehlt mir in Sachen Progrmmiersprache M eben jegliche Erfahrung.

Vielleicht kann mir jemand diesbezüglich auf die Sprünge helfen und evtl. einen Code hier einstellen, den ich dann an meine aktuellen oder künftigen Bedürfnisse anpassen kann.



Nochmals Danke und Grüße

Torsten
Hallo,

ich habe mal etwas probiert. Schau dir mal "Text.Range" und "List.Contains" an.
Hallo Cadmus,

kam erst jetzt dazu deinen Vorschlag zu testen.
Ist eigentlich genau das was ich benötigte. Ich habe es jetzt an meine Bedürfnisse angepasst und es funktioniert. Darauf kann ich nun aufbauen und weitere ähnlich gelagerte Auswertungen auf den Weg bringen.
  
Herzlichen Dank für die Unterstützung
Grüße Torsten
und

Xmas26