Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
Werte in Rückgabematrix aus FILTER() ersetzen
10.08.2023 08:57:56
Uli
Hallo,

ich möchte mit einer Kombination aus FILTER() und SUMMENPRODUKT() eine Gesamtsumme aller Datensätze mit einem bestimmten Kriterium ausgeben lassen.
Sagen wir, eine Tabelle "Käufe" enthält die Datensätze mit Angabe der Konten, Menge und Kosten und eine Tabelle "Auswertung" die Zusammenfassung, wobei ich das zusammenzufassende Konto in Zelle "A2" auswählen kann.

Die einfache Lösung funktioniert bereits mit der folgenden Formel, wobei
Käufe!A: das Konto enthält,
Käufe!C: die Menge der gekauften Einheiten und
Käufe!E: die Kosten einer Einheit.
SUMMENPRODUKT(FILTER(Käufe!C:C;Käufe!A:A=$A$2;"0");FILTER(Käufe!E:E;Käufe!A:A=$A$2;"0"))


Die einfache Lösung ist aber nicht elegant, weil sie ein nicht-relationes Schema voraussetzt: Die Kosten der Käufe sind in jedem Datensatz einzeln aufgeführt. Ich möchte daher in der Tabelle "Käufe" lieber nur eine Kostenkategorie aufführen und die jeweiligen Kosten einer Kategorie in einer gesonderten Tabelle "Kosten". Dann würde der hier fett gedruckten Teil der obigen Formel stattdessen die Kostenkategorie enthalten und die müsste über eine irgendwie geartete Nachschlagefunktion in der Tabelle "Kosten" nachsehen, welche Kosten die Kategorie verursacht und die Werte entsprechend ersetzen:
SUMMENPRODUKT(FILTER(Käufe!C:C;Käufe!A:A=$A$2;"0");FILTER(Käufe!E:E;Käufe!A:A=$A$2;"0"))

Bei "irgendwie geartete Nachschlagefunktion" kommt mir natürlich als erstes SVERWEIS() in den Sinn, aber ich habe keine Ahnung, wie das gehen könnte.
Könnt ihr mir einen Tipp geben?

Hier die entsprechende Beispieldatei: https://www.herber.de/bbs/user/162269.xlsx


Beste Grüße
Uli


PS: Das Szenario oben ist nur ein vereinfachtes Beispiel, der letzendliche Anwendungskontext ist komplexer. Aber wenn mein obiges Problem gelöst ist, sollte auch der Rest klappen.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das macht man so nicht
10.08.2023 09:01:24
lupo1
Verwende FILTER auf alle Spalten der Tabelle nur einmal.

Dann greifst Du mit INDEX oder SPALTENWAHL innerhalb von LET auf einzelne Spalten des Filtrats zu.

Und dann kannst Du SUMMENPRODUKTen, wie Du lustig bist. SUMME reicht übrigens ab XL2021.
Werte in Rückgabematrix aus FILTER() ersetzen
10.08.2023 13:12:31
daniel
HI
mal eine alternativlösung, auf für ältere Versionen:
wenn du deine Tabelle "Kosten" in ein Linear-Format bringsts (also Kategorie in Spalte A, Jahr in Spalte B, Preis in Spalte C und dann alle Varianten untereinander), dann kannst du die Aufgabe mit dieser Formel lösen:

=SUMMENPRODUKT((A2=Käufe!A2:A6)*SUMMEWENNS(Kosten!C:C;Kosten!B:B;JAHR(Käufe!B2:B6);Kosten!A:A;Käufe!D2:D6)*Käufe!C2:C6)


also die Gesamtsumme pro Konto unter Berücksichtigung von Preis und Anzahl

Gruß Daniel
Anzeige
Werte in Rückgabematrix aus FILTER() ersetzen
10.08.2023 15:12:57
Uli
Danke, ich versuche mich mal daran! Beim ersten Copy&Pasten der Formel kam ein falsches Ergebnis raus und ich habe deine Formel auf Anhieb nicht ganz verstanden, aber ich setze mich noch in Ruhe dran und schaue, ob ich damit weiterkomme!
Werte in Rückgabematrix aus FILTER() ersetzen
16.08.2023 11:38:03
Uli
Hallo Daniel,

danke nochmal für deinen Tipp. Damit (bzw. einer Abwandlung davon) kriege ich hin, was ich will. Der Trick liegt deinem Vorschlag, SUMMENPRODUKT eine Matrix aus Wahrheitswerten zu übergeben anstatt FILTER einzusetzen, das kannte ich noch nicht. Eine sehr coole und mächtige Methode!

Viele Grüße
Uli
AW: Das macht man so nicht
10.08.2023 12:18:19
Uli
Danke für den Vorschlag, ich habe die Formel abgeändert:
=LET(datensatz;FILTER(Käufe!A:E;Käufe!A:A=$A$2;"");menge;INDEX(datensatz;;3);kosten;INDEX(datensatz;;5);SUMMENPRODUKT(menge;kosten))

Das klappt und wirkt auf mich auch sauberer. Allein das Problem mit relationalen Beziehung der Kosten ist noch nicht gelöst. Ich würde in der Variablen "kosten" ja gern die Kostenkategorien und nicht die tatsächlichen Kosten erfassen und Letztere dann durch eine Abfrage/Ersetzen-Funktion anhand Ersterer ersetzen. Dann muss ich, wenn ich erfahre, dass eine prognostizierte Kostenkategorie falsch mitgeteilt und korrigiert wurde, den Betrag nur einmal in der Tabelle "Kosten" ändern und nicht in jedem Datensatz der Käufe.

Hier die aktualisierte Beispieldatei: https://www.herber.de/bbs/user/162272.xlsx
Anzeige
AW: Das macht man so nicht
10.08.2023 12:36:31
onur
"relationalen Beziehung der Kosten " ? "die Kostenkategorien und nicht die tatsächlichen Kosten erfassen" ?
Ich zumindest habe null Ahnung, was du meinst.
Zeig doch mal ein Wunschergebnis mit genauer Begründung, warum und wie das Ergebnis zustande kommt.
Das macht man so nicht
10.08.2023 12:53:43
Uli
Ich will so etwas wie einen SVERWEIS(), der in einem Bereich einen Suchwert nachschlägt und einen entsprechenden Rückgabewert ausgibt - nur nicht für eine einzelne Zelle, sondern für jeden Wert einer Matrix auf einmal. Ich dachte, in der Beispieldatei und meiner Beschreibung würde das deutlich.

Angenommen die Matrix, die hier als Ausgangswert fungiert (im obigen Beispiel analog: die Datensätze aus "Käufe), enthält: {A; A; B; A; C; C; B}.
Dann möchte ich, dass jedes Element der Matrix - analog zum Suchwert in SVERWEIS - anhand der Zuordnung in einem Bereich nachgeschlagen wird (im obigen Beispiel die Tabelle "Kosten"):
A=100
B=200
C=300
Das gewünschte Endergebnis, in das die Ausgangsmatrix konvertiert werden soll, wäre dann: {100; 100; 200; 100; 300; 300; 200}.

Da ich dieses Endergebnis aber nicht bloß angezeigt bekommen möchte, sondern direkt weiterverarbeiten möchte, sollte die dafür nötige Formel in die oben erwähnte FILTER()-Funktion eingebaut werden können. Ich will mir den Umweg über zig Hilfstabellen ersparen und die Formel hier anstatt der fett gedruckten Variable "kosten" einsetzen:
LET(datensatz;FILTER(Käufe!A:E;Käufe!A:A=$A$2;"");menge;INDEX(datensatz;;3);kosten;INDEX(datensatz;;5);SUMMENPRODUKT(menge;kosten))

Anzeige
AW: Das macht man so nicht
10.08.2023 13:05:47
onur
"Angenommen die Matrix, die hier als Ausgangswert fungiert (im obigen Beispiel analog: die Datensätze aus "Käufe), enthält: {A; A; B; A; C; C; B}. " ?
Wie kommt denn jetzt auf einmal "{A; A; B; A; C; C; B}" zustande ?
Vergiss doch mal das ganze Theoretisieren. Was genau soll berechnet werden? Aber ohne Ausdrücke wie Matrix, Datensätze usw....
Anhand eines KONKRETEN Beispiels, das man auch nachvollziehen kann.....

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige