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

Power Query: MAXWENNS

Forumthread: Power Query: MAXWENNS

Power Query: MAXWENNS
22.03.2021 11:26:02
Chris
Hallo Zusammen,
ich möchte mit Power Query einen MAX-Wert anhand 3 Kriterien ermitteln (aktuell noch mit einer MAXWENNS-Formel realisiert), welchen ich später für die Berechnung von benutzerdefinierten Spalten brauche - wie mache ich das? Geht das mit List.Max?
Der Weg über eine Extra-Zusammenfassung würde meiner Meinung nach zu viele Schritte kreieren, worunter die Performance leidet - daher suche ich einen eleganteren Weg - Danke schonmal für Eure Hilfe!
Lg,
Chris

Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query: MAXWENNS
22.03.2021 11:30:37
Günther
Ein uralter Spruch: "Probieren geht über studieren".
Ansonsten halte ich mich raus, da ich lieber einige Sekunden längere Laufzeit in Kauf nehme, wenn dadurch der Code (Formeln, M-Code) transparenter wird.
 
Gruß
Günther  |  mein Excel-Blog

Anzeige
AW: Power Query: MAXWENNS
22.03.2021 11:32:28
ChrisL
Hi Chris
Ich schätze hierzu würde ich einfach "Gruppieren".
Falls es ein Zwischenschritt darstellt, muss das Resultat nicht zwingend ausgegeben werden. Performance braucht hauptsächlich das Laden. Selbst wenn es eine eigene Funktion List.MaxIfs gäbe, wäre diese m.E. nicht prinzipiell schneller.
cu
Chris

Anzeige
AW: Power Query: MAX
22.03.2021 14:55:29
ChrisL
Hi
Gruppieren und frisch zusammenfügen ist bei 3 Spalten doch etwas unpraktisch. Darum mit Table.Max().
https://www.herber.de/bbs/user/145019.xlsx
n.b. Mit Max-"WENNS" und Kriterien hat es übrigens nicht zu tun. Ein Standard-Max, aber 3x angewendet.
cu
Chris

Anzeige
AW: Power Query: MAX
24.03.2021 07:00:42
Chris
Danke Chris,
ich habe dein Post erst jetzt gesehen - Gott sei dank gibt es doch eine smartere Lösung!
Ein Bier geht auf Dich!
Lg

AW: Power Query: MAX
26.03.2021 12:41:07
Chris
Hallo ChrisL,
jetzt tut sich doch noch ein Problem auf - wenn ich Table.Max() auf ein Tabelleblatt anwende welches von einer Abfrage erstellt wurde, funktioniert das bei mir leider nicht...
Gibt es auch eine Lösung, wenn ich das innerhalb einer Abfrage machen möchte (also nur als Verbindung geladen)?
Ich hoffe, Du / Ihr überrascht mich erneut mit einer Lösung - vielen Dank und schönes WE!
Lg,
Chris

Anzeige
AW: Power Query: MAX
26.03.2021 13:50:29
ChrisL
Hi
Grundsätzlich sollte es genauso gehen. Bitte Beispieldatei.
cu
Chris

AW: Power Query: MAX
26.03.2021 18:31:56
Chris
Hallo Chris,
anbei deine Beispieldatei,, wo ich auf eine Spalte im Abfrageeditor den MAX-Wert ermitteln möchte - siehe Error:
https://www.herber.de/bbs/user/145147.xlsx
Danke schonmal fürs tüfteln!
Lg,
Chris

Anzeige
AW: Power Query: MAX
26.03.2021 18:32:41
Chris
Hallo Chris,
anbei deine Beispieldatei,, wo ich auf eine Spalte im Abfrageeditor den MAX-Wert ermitteln möchte - siehe Error:
https://www.herber.de/bbs/user/145147.xlsx
Danke schonmal fürs tüfteln!
Lg,
Chris

AW: der PQ-Fehler ist plausibel ...
26.03.2021 19:07:45
neopa
Hallo Chris,
... denn Du hast die auszuwertende Spaltenamen mit "[]" umgeben anstelle mit "". ChrisL hat es Dir doch in Schritt 2 bis 4 richtig aufgezeigt.
Warum bzw. wozu Du eine neuerliche MAX-Auswertung vornehmen willst, erschließt sich mir allerdings nicht.
Gruß Werner
.. , - ...

Anzeige
AW: der PQ-Fehler ist plausibel ...
26.03.2021 20:42:53
Christian
Hallo Werner,
geht leider nicht - habe die Spaltennamen der eigentlichen Tabelle geändert, damit nun in der MAX-Funktion wirklich nur der Spaltenname der Abfrage vorkommt: https://www.herber.de/bbs/user/145149.xlsx
Wäre cool, wenn man innerhalb einer Abfrage das elegant lösen könnte - Danke!
Lg

Anzeige
AW: wenn Änderungen in der PQ-Datenquelle ...
27.03.2021 08:46:40
neopa
Hallo Chris,
... von Dir vorgenommen werden bzw. wurden, wie dies aus der neu eingestellten Datei zu entnehmen ist (den bisherigen Überschriften wurde nach "Jahr" eine 1 angehangen) , dann sind diese im Script natürlich auch entsprechend zu ändern. PQ passt im Script diese nicht automatisch an, wie dies z.B. bei Formelauswertungen der Fall ist). Wenn Du das berücksichtigst , dann erhältst Du auch das von Dir gewünschte.
Wobei ich nicht verstanden habe und verstehe, warum Du den jeweiligen MAX-Wert in jeder Datenzeile haben möchtest. Die Ermittlung der (einmaligen) MAX-Werte unterhalb der Quelldatenspalte (auch mit PQ möglich, nur etwas anders) ist mE doch völlig ausreichend und verständlicher.
Gruß Werner
.. , - ...

Anzeige
AW: wenn Änderungen in der PQ-Datenquelle ...
27.03.2021 14:56:43
Christian
Hallo Werner,
ich habe nun eine neue Datei erstellt, da Dir vermutlich nicht ganz klar war, was ich machen möchte - ich will eigentlich innerhalb der Abfrage den MAX-Wert bestimmen - siehe hier: https://www.herber.de/bbs/user/145156.xlsx
Ich hoffe jetzt ist klarer was das Ziel ist ;-)
Danke!
Lg

Anzeige
AW: das ist dann was anderes ...
27.03.2021 16:52:47
neopa
Hallo Chris,
... bin kein PQ-Profi und habe folgendes jetzt dafür "zusammengebastelt":
In PQ-Editor folgender Code:
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Datum", type date}, {"Material", type text}, {"Menge", Int64.Type}}),
#"Geänderter Typ1" = Table.TransformColumnTypes(#"Geänderter Typ",{{"Datum", type text}}),
#"Extrahierte letzte Zeichen" = Table.TransformColumns(#"Geänderter Typ1", {{"Datum", each Text.End(_, 4), type text}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Extrahierte letzte Zeichen", "Jahr", each if [Datum]="2021" then "Menge - aktuelles Jahr" else "Menge - letztes Jahr"),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Datum"}),
#"Pivotierte Spalte" = Table.Pivot(#"Entfernte Spalten", List.Distinct(#"Entfernte Spalten"[Jahr]), "Jahr", "Menge", List.Sum),
Neu = Table.ReorderColumns(#"Pivotierte Spalte",{"Material", "Menge - aktuelles Jahr", "Menge - letztes Jahr"}),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(Neu, "Max aktuelles Jahr", each List.Max(Neu[#"Menge - aktuelles Jahr"])),
#"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte1", "Benutzerdefiniert", each List.Max(Neu[#"Menge - letztes Jahr"]))
in
#"Hinzugefügte benutzerdefinierte Spalte2"
Gruß Werner
.. , - ...

Anzeige
AW: das ist dann was anderes ...
27.03.2021 17:53:33
Christian
Danke Werner - jetzt klappts!!!

AW: bitteschön owT
27.03.2021 19:31:03
neopa
Gruß Werner
.. , - ...

AW: Power Query: MAXWENNS
22.03.2021 11:41:48
Daniel
Hi
1. Liste nach der Spalte mit dem Wert absteigend sortieren
2. Duplikate entfernen mit den drei Kriteriumsspalten
dann sollten alle möglichen vorhandenen Variationen der drei Kriterien einmal aufgelistet werden und du hast für jede Kombination den Max-Wert.
sollte aber alternativ und ohne sortieren auch mit Hilfe eine Pivottabelle funktionieren.
dh die die drei Kriterien-Spalten nach "Zeilen" ziehen und in "Werte" dann mit "Maximum" auswerten.
Gruß Daniel

Anzeige
AW: Power Query: MAXWENNS
22.03.2021 14:08:19
Chris
Danke an alle für die Rückmeldung - ich habe nun eine Beispieldatei zur Veranschaulichung erstellt - ich möchte den ermittelten MAX-Wert wie in Spalte E bis G dargestellt ausgeben:
https://www.herber.de/bbs/user/145018.xlsx
Aber wie mache ich das?
Danke!
Lg,
Chris

Anzeige
AW: Power Query: MAXWENNS
23.03.2021 06:46:16
Chris
Guten Morgen Günther,
vielen Dank für deine Lösung - ich bräuchte die Lösung "oder etwa doch so", da ich mit dem Max-Wert je Material noch rechnen muss.
Wenn ich die Datei herunterlade, sehe ich keine Verbindungen - bitte daher prüfen - Danke!
Lg,
Chris

AW: Power Query: MAXWENNS
23.03.2021 09:34:14
Günther
Moin Chris,
… das war schon gewollt so (also ohne Code); daher auch "Ergebnis" als Anhang zum Filenamen bzw. der Hinweis auf den fehlenden Weg. Prinzipiell habe ich von jeder Jahr-Spalte eine neue Abfrage (Ergebnis=Liste) erstellt und dort per Mausklick das Maximum. Anschließend die 3 neuen Spalten mit den entsprechenden Namen erstellt und als Formel "nur" den Namen der entsprechenden Abfrage/Liste entsprechend eingefügt.
 
Gruß
Günther  |  mein Excel-Blog

Anzeige
AW: Power Query: MAXWENNS
24.03.2021 06:57:34
Chris
Guten Morgen Günther und auch an alle anderen,
danke nochmals für deine Rückmeldung.
Der Weg ist mir klar - ich dachte jedoch Du hast eine smartere Lösung gefunden, da ich die Anzahl der Abfragen so gering wie möglich halten möchte. Ich vermute (ist nur so ein Gefühl), dass beim mehrfachen Duplizieren von Abfragen um den MAX-Wert zu berechnen (muss ich pro Auswertung 3 mal machen und ich habe in Summe 7 verschiedene Auswertungen) die Performance darunter leidet und das ganze Konstrukt auch undurchsichtig wird.
Daher nochmals die Frage an Dich und auch alle anderen: Gibt es keine Lösung welche ich in der bestehenden Abfrage realisieren kann?
Lg,
Chris

Anzeige
AW: Power Query: MAXWENNS
24.03.2021 07:01:33
Chris
Ist erledigt, da ChrisL dies gelöst hat ;-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

MAX-Wert in Power Query ermitteln


Schritt-für-Schritt-Anleitung

Um den MAX-Wert in Power Query zu ermitteln, folge diesen Schritten:

  1. Datenquelle vorbereiten: Lade die Daten in Power Query, indem du auf "Daten abrufen" gehst und deine Datenquelle auswählst.

  2. Tabelle anpassen: Wähle die Tabelle aus, in der du den MAX-Wert ermitteln möchtest.

  3. Gruppieren der Daten:

    • Gehe zu "Start" und klicke auf "Gruppieren".
    • Wähle die Spalten aus, die als Kriterien dienen sollen.
    • Wähle "Max" als Aggregationsfunktion für die Spalte, aus der du den MAX-Wert ermitteln möchtest.
  4. MAX-Wert ermitteln: Du kannst auch die List.Max-Funktion verwenden. Dazu fügst du eine benutzerdefinierte Spalte hinzu und verwendest den folgenden M-Code:

    = List.Max(#"Vorheriger Schritt"[DeineSpalte])
  5. Ergebnisse laden: Klicke auf "Schließen & Laden", um die Ergebnisse in Excel zu importieren.


Häufige Fehler und Lösungen

  • Fehler bei der MAX-Funktion:

    • Möglicherweise hast du die Spaltennamen in der MAX-Funktion falsch geschrieben oder nicht korrekt referenziert. Stelle sicher, dass du die Namen korrekt in Anführungszeichen setzt.
  • Duplikate werden nicht entfernt:

    • Wenn du Duplikate basierend auf mehreren Bedingungen entfernen möchtest, verwende die Funktion Table.Distinct mit den entsprechenden Spalten als Argumente.
  • Leere Zellen:

    • Wenn leere Zellen vorhanden sind, kann dies zu unerwarteten Ergebnissen führen. Filtere diese Zellen vor der Anwendung der MAX-Funktion.

Alternative Methoden

  • Pivottabelle:

    • Eine Pivottabelle kann ebenfalls verwendet werden, um den MAX-Wert zu ermitteln. Ziehe die Kriterien in die Zeilen und die Werte in den Wertebereich, dann wähle "Maximum" für die Berechnung.
  • Excel-Funktionen:

    • Du kannst die MAXWENNS-Formel in Excel verwenden, um den MAX-Wert basierend auf mehreren Bedingungen direkt in der Excel-Oberfläche zu berechnen.
=MAXWENNS(Bereich, Kriterien1, Vergleichswert1, Kriterien2, Vergleichswert2)

Praktische Beispiele

  • Beispiel 1: Angenommen, du hast eine Tabelle mit Verkaufsdaten und möchtest den MAX-Umsatz pro Jahr und Produktkategorie ermitteln. Nutze die Gruppierfunktion und wähle "Max" für die Umsatzspalte.

  • Beispiel 2: Mit der List.Max-Funktion kannst du den höchsten Wert aus einer Liste von Verkaufszahlen berechnen, die nach Region gefiltert wurde.


Tipps für Profis

  • Effiziente Abfragen erstellen: Reduziere die Anzahl der Abfragen, indem du M-Code optimierst. Verwende Table.Max statt mehrfacher List.Max-Aufrufe, um die Performance zu verbessern.

  • DAX für komplexe Berechnungen: Wenn du in Power BI arbeitest, ziehe in Betracht, DAX-Funktionen wie MAXX oder MAXIFS zu verwenden, um komplexe Berechnungen durchzuführen.

  • Vermeidung von Duplikaten: Experimentiere mit der power query duplikate entfernen mit bedingung-Funktion, um Duplikate basierend auf bestimmten Kriterien effizient zu entfernen.


FAQ: Häufige Fragen

1. Wie kann ich in Power Query den MAX-Wert aus einer bestimmten Spalte ermitteln?
Verwende die Gruppierfunktion oder die List.Max-Funktion, um den MAX-Wert aus einer Spalte zu erhalten.

2. Was mache ich, wenn ich die MAX-Werte für mehrere Kriterien gleichzeitig berechnen möchte?
Nutze die Gruppierfunktion und wähle mehrere Spalten als Kriterien aus, während du "Max" als Aggregationsfunktion für die Zielspalte angibst.

3. Kann ich die MAX-Funktion auch in DAX verwenden?
Ja, in DAX kannst du MAX, MAXX oder MAXIFS verwenden, um maximalen Werte basierend auf Bedingungen zu berechnen.

4. Wie gehe ich vor, wenn ich mit leeren Zellen in meiner Datenquelle konfrontiert bin?
Filtere leere Zellen aus, bevor du die MAX-Funktion anwendest, um genaue Ergebnisse zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige