Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Power Query: Ersetzen - Wenn mit endet

Power Query: Ersetzen - Wenn mit endet
18.10.2022 12:15:27
Dennis
Hallo liebes Forum,
ich hänge gerade bei einem Problem in Power Query und komme nicht auf die Lösung.
In meiner Tabelle habe ich mehrere Spalten. Eine davon ist die Spalte "Artikel" in der Artikel mit "-2" enden. Ich möchte jetzt das in einer neuen Spalte bei diesen Artikeln ("-2) ein E eingetragen wird. Bei allen anderen soll der Wert der Spalte "Kategorie" genommen werden. Also eine IF Formel, welche ich leider nicht hinbekomme.
Könnt ihr mir helfen?
Vg Dennis
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine Möglichkeit wäre ...
18.10.2022 12:36:47
neopa
Hallo Dennis,
... wenn Du es interaktiv realisieren möchtest mit einer Hilfsspalte, die Du anschließend gleich wieder löschst.
Dazu nutze die Funktion [Extrahieren ...] [letzte Zeichen] und zwar da eben für 2 für Deine Spalte "Artikel" in eine Spalte nennen wir sie z.B. "temp"
Dann füge eine benutzerdefinierte Spalte z.B. namens "neu" ei
n wie folgt ein:
= Table.AddColumn(#"Eingefügte letzte Zeichen", "neu", each if [temp]="-2" then "E" else [Kategorie])
und entferne dann "temp" wieder
Gruß Werner
.. , - ...
Anzeige
AW: eine Möglichkeit wäre ...
18.10.2022 13:20:38
Dennis
Hallo Werner,
vielen Dank für deine Antwort. Leider bekomme ich es nicht eingefügt. Habe daher jetzt mal die Datei mit angehangen.
https://www.herber.de/bbs/user/155728.xlsm
AW: gemäß meiner bisherigen Vorgabe ...
18.10.2022 14:20:46
neopa
Hallo Dennis,
... die gesamte Abfrage (mit der Hilfsspaltenlösung) so:

let
Quelle = Excel.CurrentWorkbook(){[Name="Basisdaten"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"HU", type text}, {"verpackte Menge", Int64.Type}, {"Artikel", type text}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ", "Benutzerdefiniert", each [Artikel]),
#"Eingefügte letzte Zeichen" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "temp", each Text.End([Benutzerdefiniert], 2), type text),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Eingefügte letzte Zeichen", "neu", each if [temp]="-2" then "E" else [Kategorie]),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"temp"})
in
#"Entfernte Spalten"
Gruß Werner
.. , - ...
Anzeige
AW: oder gesamte Abfrage eingekürzt ...
18.10.2022 14:30:25
neopa
Hallo
... mit Hilfe einer M-Code-Funktion zu:

let
Quelle = Excel.CurrentWorkbook(){[Name="Basisdaten"]}[Content],
neu = Table.AddColumn(Quelle, "neu", each if Text.End([Artikel],2)="-2" then "E" else [Kategorie])
in
neu
Gruß Werner
.. , - ...
Anzeige
AW: eine Möglichkeit wäre ...
18.10.2022 16:03:58
Yal
Hallo Dennis,
Power Query nimmt immer das Ergebnis der vorigen Schritt als Quelle für die jetzige.
Dementsprechend sollte es nicht

= Table.AddColumn(#"Eingefügte letzte Zeichen", "neu", each if [temp]="-2" then "E" else [Kategorie]) 
heissen, sondern

= Table.AddColumn(#"Umbenannte Spalte", "neu", each if [temp]="-2" then "E" else [Kategorie]) 
Im erweiterten Editor (EE) schaltet sich die Assistenz von PQ aus. Also wenn Du per Hand direkt im EE etwas vornimmst, musst Du für die Richtigkeit der Verkettung selber sorgen. Im Schritt vor "Umbenannte Spalte" heisst die Spalte noch nicht "temp" sondern "Letzte Zeichen".
Du kannst übrigens den Namen der entstehende Spalte direkt in der Schritt "Eingefügte letzte Zeichen" vornehmen (achte, dass die Bearbeitungsleiste sichtbar ist):
davor:

= Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Letzte Zeichen", each Text.End([Benutzerdefiniert], 2) , type text) 
danach:

= Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "temp", each Text.End([Benutzerdefiniert], 2) , type text) 
Du kannst auch beide Schritte zusammenführen:

= Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "neu", each if Text.End([Benutzerdefiniert], 2)  = "-2" then "E" else [Kategorie]) 
VG
Yal
Anzeige
AW: da stimmen wir beide überein :-) owT
18.10.2022 16:16:34
neopa
Gruß Werner
.. , - ...
AW: da stimmen wir beide überein :-) owT
18.10.2022 18:20:08
Yal
oh... jetzt als ich mir die Zeit nehme, dein gepostete M-Code en Detail zu schauen, sehen ich, dass alles schon drin ist. Sorry, für das Übersehen.
Jetzt fehlt nur noch die Rückmeldung des Fragenden, ob er mit unseren G'schwätz zurecht kommt.
VG
Yal
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Power Query: Werte ersetzen mit Bedingungen


Schritt-für-Schritt-Anleitung

Um in Power Query Werte zu ersetzen, wenn bestimmte Bedingungen erfüllt sind (z.B. wenn der Artikel mit "-2" endet), folge diesen Schritten:

  1. Datenquelle auswählen: Öffne Power Query über Daten > Abfragen und Verbindungen > Abfrage bearbeiten oder Daten abrufen.

  2. Hilfsspalte erstellen: Füge eine Hilfsspalte hinzu, um die letzten Zeichen des Artikels zu extrahieren. Dies kannst du mit der Funktion Text.End machen:

    = Table.AddColumn(Quelle, "temp", each Text.End([Artikel], 2), type text)
  3. Benutzerdefinierte Spalte hinzufügen: Füge eine neue benutzerdefinierte Spalte hinzu, die die Werte ersetzt. Hierbei kannst du eine IF-Bedingung verwenden:

    = Table.AddColumn(#"Vorheriger_Schritt", "neu", each if [temp] = "-2" then "E" else [Kategorie])
  4. Hilfsspalte entfernen: Entferne die Hilfsspalte, wenn sie nicht mehr benötigt wird:

    = Table.RemoveColumns(#"Vorheriger_Schritt", {"temp"})
  5. Abfrage schließen und laden: Klicke auf Schließen & Laden, um die Änderungen in Excel zu speichern.


Häufige Fehler und Lösungen

  • Fehler bei der Spaltenbenennung: Achte darauf, dass du die korrekten Namen der vorherigen Schritte verwendest. Wenn du in Power Query eine Spalte umbenennst, musst du diesen Namen in den nachfolgenden Schritten verwenden.

  • M-Code Fehler: Wenn der M-Code nicht funktioniert, überprüfe, ob alle Klammern und Anführungszeichen korrekt gesetzt sind.

  • Null-Werte ersetzen: Wenn du mit Null-Werten arbeitest, kannst du diese einfach durch 0 ersetzen, indem du die Funktion if [Spalte] = null then 0 else [Spalte] verwendest.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, mehrere Werte in Power Query zu ersetzen:

  • Bedingte Spalte erstellen: Anstatt eine Hilfsspalte zu verwenden, kannst du auch direkt eine bedingte Spalte hinzufügen:

    = Table.AddColumn(Quelle, "neu", each if Text.End([Artikel], 2) = "-2" then "E" else [Kategorie])
  • Fehler ersetzen: Um Fehler in der Abfrage zu ersetzen, kannst du die Funktion try ... otherwise verwenden:

    = Table.AddColumn(Quelle, "neu", each try if Text.End([Artikel], 2) = "-2" then "E" else [Kategorie] otherwise "Fehler")

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du in Power Query Werte ersetzen kannst:

let
    Quelle = Excel.CurrentWorkbook(){[Name="Basisdaten"]}[Content],
    HinzugefügteSpalte = Table.AddColumn(Quelle, "neu", each if Text.End([Artikel], 2) = "-2" then "E" else [Kategorie])
in
    HinzugefügteSpalte

In diesem Beispiel wird eine neue Spalte "neu" erstellt, die "E" enthält, wenn der Artikel mit "-2" endet, anderenfalls wird der Wert der Spalte "Kategorie" übernommen.


Tipps für Profis

  • M-Code optimieren: Vermeide unnötige Schritte im M-Code, indem du mehrere Transformationen in einem Schritt kombinierst. Dies verbessert die Performance.

  • Debugging: Nutze den Erweiterten Editor, um den M-Code zu bearbeiten und zu testen. Hier kannst du auch Teile des Codes kommentieren, um Fehler leichter zu identifizieren.

  • Automatisierung: Speichere häufig verwendete Abfragen als Vorlagen, um Zeit bei der Datenbearbeitung zu sparen.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Werte in einer Spalte gleichzeitig ersetzen?
Du kannst mehrere Bedingungen in einer IF-Anweisung kombinieren oder die List.Contains-Funktion verwenden, um eine Liste von Werten zu überprüfen.

2. Was mache ich, wenn Power Query nicht die erwarteten Ergebnisse liefert?
Überprüfe den M-Code auf mögliche Syntaxfehler, und stelle sicher, dass die Datenquelle korrekt geladen wurde. Zudem kann es helfen, die Schritte in Power Query zu verfolgen und zu überprüfen, ob die Daten wie gewünscht transformiert werden.

3. Kann ich Power Query auch in Power BI verwenden?
Ja, Power Query ist eine integrierte Funktion sowohl in Excel als auch in Power BI, sodass du ähnliche Techniken in beiden Programmen verwenden kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige