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

Maxwert aus Liste mit mehreren Kriterien

Maxwert aus Liste mit mehreren Kriterien
26.09.2022 12:39:42
Gesa
Hallo zusammen,
ich stehe mal wieder vor einem Problemchen und setze auf euer Schwarmwissen.
Vorab: VBA ist keine Möglichkeit, da im Unternehmen gesperrt...
Ich habe eine Liste mit Lieferanten, bestellten Artikeln und den jeweiligen Mengen je Bestellung. Nun benötige ich je Lieferant als Ausgabewert die Bestellmenge, die am meisten getätigt worden ist.
Beispiel:
Lieferant Artikel Menge
A 123 100
B 456 200
C 123 100
D 123 150
A 123 150
C 456 200
A 123 100
B 456 200
Hier wäre z.B. für Lieferant A mit Artikel 123 der Wert 100 als am meisten bestellte Menge. Also nicht der Maximalwert, der jemals bestellt worden ist, sondern die Menge, die am häufigsten bestellt wurde.
Hilfe?
Danke und liebe Grüße
Gesa

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
da gibts maxwenns() owt
26.09.2022 12:48:30
ralf_b
AW: da gibts maxwenns() owt
26.09.2022 13:08:47
Gesa
Ja das habe ich schon versucht. Aber entweder bin ich zu blöd, oder das klappt in meinem Fall nicht...
AW: da gibts maxwenns() owt
26.09.2022 13:42:20
ralf_b
dann lies dir doch ein paar Beispiele durch.
AW: Maxwert aus Liste mit mehreren Kriterien
26.09.2022 13:50:02
Yal
Hallo Gesa,
es ist der "max" nach einer Gruppierung: gruppiere zuerst alle Lieferant, Artikel, Menge und Zelle dabei die Anzahl der Vorkommen, dann nehme pro Lieferant den Max der Anzahl des vorkommen.
Vielleicht am besten mit Power Query: Gruppierung über alle 3 Spalten ihnkl. Zählung, Sortieren auf Anzahl absteigend, dann Duplikate entfernen auf die Lieferanten (das "Duplikate entfernen" behält immer den ersten Treffer, drum vorher absteigend sortieren).
VG
Yal
Anzeige
AW: hierzu festgestellt und nachgefragt ...
27.09.2022 10:17:09
neopa
Hallo Yal,
... wie an Gesa bereits beschrieben, interpretierte ich die Aufgabe etwas anders als Du es getan hast. Insofern ist auch eine andere PQ-Lösung notwendig. Mir ist es aber nicht gelungen diese mit nur einer Abfrage zu erzeugen.
Meine derzeitige Lösung sieht in der Ergebnisabfrage wie folgt aus:
let

    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Lieferant", type text}, {"Artikel", Int64.Type}, {"Menge", Int64.Type}}),
#"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"Lieferant", "Artikel"}, {{"Menge gesamt", each List.Sum([Menge]), type nullable number}}),
#"Gruppierte Zeilen1" = Table.Group(#"Gruppierte Zeilen", {"Lieferant"}, {{"Menge", each List.Max([Menge gesamt]), type nullable number}}),
#"Zusammengeführte Abfragen" = Table.NestedJoin(#"Gruppierte Zeilen1", {"Lieferant", "Menge"}, Tabelle1, {"Lieferant", "Menge gesamt"}, "Tabelle1", JoinKind.LeftOuter),
#"Erweiterte Tabelle1" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "Tabelle1", {"Artikel"}, {"Artikel"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Erweiterte Tabelle1",{"Lieferant", "Artikel", "Menge"}),
#"Sortierte Zeilen" = Table.Sort(#"Neu angeordnete Spalten",{{"Lieferant", Order.Ascending}})
in
#"Sortierte Zeilen"
Die Basisabfrage so:

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Lieferant", type text}, {"Artikel", Int64.Type}, {"Menge", Int64.Type}}),
#"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"Lieferant", "Artikel"}, {{"Menge gesamt", each List.Sum([Menge]), type nullable number}})
in
#"Gruppierte Zeilen"
Wüsstest Du eine PQ-Lösung in nur einer Abfrage?
Bin erst am späteren Nachmittag wieder online.
Gruß Werner
.. , - ...
Anzeige
Beinah off-Topic
27.09.2022 10:57:07
Yal
Hallo Werner,
eine Abfrage verläuft normalerweise von einer Schritt zum nächste, was nicht bedeutet, dass die Schritte davor "vergessen" werden.
Daher kann man in dem Schritt #"Zusammengeführte Abfragen" auf #"Gruppierte Zeilen" anstatt "Tabelle1" zurückgreifen. Ungetestet ;-)

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Lieferant", type text}, {"Artikel", Int64.Type}, {"Menge", Int64.Type}}),
#"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"Lieferant", "Artikel"}, {{"Menge gesamt", each List.Sum([Menge]), type nullable number}}),
#"Gruppierte Zeilen1" = Table.Group(#"Gruppierte Zeilen", {"Lieferant"}, {{"Menge", each List.Max([Menge gesamt]), type nullable number}}),
#"Zusammengeführte Abfragen" = Table.NestedJoin(#"Gruppierte Zeilen1", {"Lieferant", "Menge"}, #"Gruppierte Zeilen", {"Lieferant", "Menge gesamt"}, "Tabelle1", JoinKind.LeftOuter),
#"Erweiterte Tabelle1" = Table.ExpandTableColumn(#"Zusammengeführte Abfragen", "Tabelle1", {"Artikel"}, {"Artikel"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Erweiterte Tabelle1",{"Lieferant", "Artikel", "Menge"}),
#"Sortierte Zeilen" = Table.Sort(#"Neu angeordnete Spalten",{{"Lieferant", Order.Ascending}})
in
#"Sortierte Zeilen"
Aber diese Reduzierung der Anzahl der Abfrage geht auf Kosten der Lesbarkeit und Wartbarkeit. Es ist daher fraglich, ob es überhaupt sinnvoll ist.
Die Abfrage "Tabelle1" müsste als "nur Verbindung" da liegen, das ist eh klar.
VG
Yal
Anzeige
AW: war und ist schon (m)ein Thema ...
27.09.2022 18:40:38
neopa
Hallo Yal,
... so etwas hatte ich gesucht. :-) Vielen Dank Dir für das Aufzeigen dieser Lösungsmöglichkeit.
Doch Du hast auch Recht damit, dass die Lesbarkeit dieser zumindest eingeschränkt ist. Da bleibe zumindest ich dann doch lieber bei meiner "2-Abfragen"-Lösung.
Gruß Werner
.. , - ...
AW: Maxwert aus Liste mit mehreren Kriterien
26.09.2022 22:28:08
Alwin
Hallo Gesa,
da ich nicht der Formelspezi bin und so auch etwas Übung bekomme, habe ich mal folgenden Lösungsweg bebaut. Das ist eine Mischung aus Summenprodukt, Max, Index und einer Hilfstabelle. Ob das die kompakteste Lösung ist, wage ich zu bezweifeln, aber die Ausgabe ist korrekt.
https://www.herber.de/bbs/user/155388.xlsx
Gruß Uwe
Anzeige
AW: Angaben verschieden interpretierbar ...
27.09.2022 10:10:26
neopa
Hallo Gesa,
... so wie Du es beschrieben hast, wäre für meine nachfolgend etwas erweiterte Datenquelle die Lösung wie ich sie in E7:G11 aufgezeigt habe (auch mit Formeln ermittelt)
Allerdings wäre für mich die Ergebnisse, die ich in E1:G5 mit Formeln und in in I1:K5 ermittelt habe logischer. Die Formeln E2:G2 nach unten ziehen.
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEFGHIJK
1LieferantArtikelMenge LieferantArtikelMenge LieferantArtikelMenge
2A123100 A111400 A111400
3B456200 B432450 B432450
4C123100 C456250 C456250
5D123150 D123150 D123150
6A123150        
7C456250 LieferantArtikelMenge    
8A123100 A123100    
9B456200 B456200    
10A111400 C123100    
11B432450 D123150    
12A12325        
13C123100        
14           

ZelleFormel
E2=WENNFEHLER(INDEX(Tabelle1[Lieferant];AGGREGAT(15;6;(ZEILE(Tabelle1[Lieferant])-1)/(ZÄHLENWENN(E$1:E1;Tabelle1[Lieferant])=0);1));"")
F2=INDEX(Tabelle1[Artikel];AGGREGAT(15;6;ZEILE(Tabelle1[Artikel])/(AGGREGAT(14;6;SUMMEWENNS(Tabelle1[Menge];Tabelle1[Lieferant];Tabelle1[Lieferant];Tabelle1[Artikel];Tabelle1[Artikel])*(Tabelle1[Lieferant]=E2);1)=SUMMEWENNS(Tabelle1[Menge];Tabelle1[Lieferant];Tabelle1[Lieferant];Tabelle1[Artikel];Tabelle1[Artikel])*(Tabelle1[Lieferant]=E2));1)-1)
G2=SUMMEWENNS(Tabelle1[Menge];Tabelle1[Lieferant];E2;Tabelle1[Artikel];F2)
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Sollte meine PQ-Lösung interessieren, dann melde Dich. Ich selbst bin mit dieser aber noch nicht zufrieden, weil diese noch eine 2. Abfrage benötigt.
Gruß Werner
.. , - ...
Anzeige
AW: Warum nicht so?...
27.09.2022 13:38:50
Eifeljoi5
Hallo
M-Code außen vor, warum nicht einfach so?

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Grouped Rows" = Table.Group(Quelle, {"Lieferant"}, {{"Artikel", each List.Max([Artikel]), type nullable number}, {"Menge", each List.Sum([Menge]), type nullable number}})
in
#"Grouped Rows"

AW: ... weil es so mE nicht gesucht war/ist owT
27.09.2022 18:50:04
neopa
Gruß Werner
.. , - ...
AW: ... Nachfrage
27.09.2022 19:32:12
Eifeljoi5
Hallo Werner
Sorry
Was ist an meiner Lösung bitte falsch, bitte um Aufklärung?
Meine Lösung liefert das gleiche Ergebnis wie von Yal oder bist da anderer Meinung?
So wie ich es verstanden habe soll bei Artikel den Maxwert und bei Menge die Summe genommen werden.
Sehe ich das falsch?
Anzeige
AW: mir stellt es sich wie folgt dar ...
27.09.2022 19:50:48
neopa
Hallo Eifelji5,
... im Ergebnis so:
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEFGHIJK
1LieferantArtikelMenge neopa C Formellösung: neopa C Lösung mit PQ:
2A123100 LieferantArtikelMenge LieferantArtikelMenge
3B456200 A111400 A111400
4C123100 B432450 B432450
5D123150 C456250 C456250
6A123150 D123150 D123150
7C456250        
8A123100     Yal Lösung mit PQ:
9B456200     LieferantArtikelMenge
10A111400     A111400
11B432450     B432450
12A12325     C456250
13C123100     D123150
14           
15        Eifeljoi5 Lösung mit PQ:
16        LieferantArtikelMenge
17        A123775
18        B456850
19        C456450
20        D123150
21           
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
AW: Maxwert aus Liste mit mehreren Kriterien
27.09.2022 15:10:26
ChrisL
Hi
Bei den unterschiedlichen Interpretationen verliert man schnell den Durchblick. Hier die Lösung, so wie ich es verstanden habe.
- Quelldaten markieren
- Menü Daten, Aus Tabelle/Bereich
- Power-Query Editor öffnet
- Menü Ansicht, erweiterter Editor - Code ersetzen
- Speichern & Laden

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Gruppierte Zeilen" = Table.Group(Quelle, {"Lieferant", "Artikel", "Menge"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}}),
#"Gruppierte Zeilen1" = Table.Group(#"Gruppierte Zeilen", {"Lieferant"}, {"alle", each _, type table}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen1", "Benutzerdefiniert", each Table.SelectRows([alle], (x) => x[Anzahl]=List.Max([alle][Anzahl]))),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert", {"Artikel", "Menge"}, {"Artikel", "Menge"}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Erweiterte Benutzerdefiniert",{"alle"})
in
#"Entfernte Spalten"
Bis auf die folgende benutzerdefinierte Spalte ist alles im Standard:

Table.SelectRows([alle], (x) => x[Anzahl]=List.Max([alle][Anzahl]))
cu
Chris
Anzeige
AW: Maxwert aus Liste mit mehreren Kriterien
27.09.2022 15:35:17
ChrisL
Formeln sind zwar nicht mein Steckenpferd, aber ich habe meine Interpretation trotzdem mal noch versucht mit Formeln umzusetzen.
(die Tabelle wurde zuvor im Start-Menü mittels "Als Tabelle formatieren" umgewandelt)
Hilfsspalte D, Titel Anzahl

=ZÄHLENWENNS([Lieferant];[@Lieferant];[Artikel];[@Artikel];[Menge];[@Menge])
Hilfsspalte E; Titel Max

=MAXWENNS([Anzahl];[Lieferant];[@Lieferant])
Neuer Bereich für Resultat:

=FILTER(Tabelle1;Tabelle1[Anzahl]=Tabelle1[Max])
Das Finish (Duplikate entfernen und sortieren) funktioniert so leider nur mit Excel 2021/365:

=SORTIEREN(EINDEUTIG(FILTER(Tabelle1;Tabelle1[Anzahl]=Tabelle1[Max])))
Die zündende Idee für den letzten Schritt, basierend auf deiner Excel-Version fehlt also noch, andererseits liege ich vielleicht mit meiner Interpretation sowieso daneben. Zudem würde ich persönlich sowieso Power-Query vorziehen.
Anzeige
AW: er hat als Version XL2019 angeben ...
27.09.2022 18:52:57
neopa
Hallo Chris,
... und somit stehen Gesa die meisten hier von Dir genutzten Funktionen noch nicht zur Verfügung.
Gruß Werner
.. , - ...
AW: er hat als Version XL2019 angeben ...
28.09.2022 08:34:34
ChrisL
Hi Werner
Danke für die Klarstellung. Für Eindeutig und Sortieren war mir dies bewusst. Hierfür hätte ich mir dann notdürftig mit solch einem Ansatz beholfen:
https://www.herber.de/excelformeln/pages/Formelloesungen_fuer_Spezialfilter_ohne_Duplikate.html
Oder ich hätte einfach darauf gewartet, bis sich ein Formel-Profi wie du der Sache annimmt :)
(dass du die Interpretation bereits einbezogen hattest, habe ich übersehen)
cu
Chris
AW: diese Lösung ...
27.09.2022 18:49:22
neopa
Hallo Chris,
... ist die PQ-Lösung für meine 2. Interpretation seiner Problemstellung und zwar mit dem Ergebnis, wie ich diese in E7:G11 aufgezeigt hatte. Meine Formeln hierfür könnte ich Gesa bei Bedarf noch nachreichen. Bin aber nach wie vor der Meinung, dass die Ergebnisse gemäß meiner anderen Probleminterpretation zumindest mir logischer erscheinen.
Gruß Werner
.. , - ...
AW: diese Lösung ...
28.09.2022 08:03:03
Gesa
Moin zusammen,
so viel Input. Danke euch!!! Ich habe den PQ Ansatz gewählt und bin zum gewünschten Ergebnis gelangt. Trotzdem euch allen tausend Dank für die vielen Möglichkeiten :-)
Schönen Tag euch allen
Gruß
Gesa
AW: bitteschön, doch interessiert ...
28.09.2022 11:54:31
neopa
Hallo Gesa,
... zumindest mich, welche von Dir angestrebte Ergebnis nun das zutreffende war. Das welches von mir in E7:G11 aufgezeigt und von ChrisL mit PQ umgesetzt wurde oder die andere Interpretation, welche von Yal und mir mit PQ realisiert wurde?
Gruß Werner
.. , - ...

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige