Mit let Daten aus iner Liste filtern
#1
Hi Ihr Wissenden,

heute brauche ich mal Eure Hilfe. Und zwar möchte ich mit let die Summe aus einer Liste von Daten ermitteln.
Die Summe durch das Filtern eines Einzeldatums (Bsp.: 1.1.26) ist ja kein Problem, aber wenn nach mehreren Daten (Bsp.: {1.1.26, 2.3.26,....} gefiltert werden soll, scheitere ich an meinem Unwissen.
Ich hoffe, eier von Euch hat eine Lösung für mich.
Erläuterung in der angehängten Datei.

.xlsx   Mit let Daten aus Liste filtern.xlsx (Größe: 16,25 KB / Downloads: 12)

Danke schon mal vorab!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#2
Hallo,

so:
Code:
=SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Datum]>=--("01.01.2026"))*(Tabelle1[Datum]<--("01.02.2026"))))

Gruß Uwe
Antworten Top
#3
Hallo
Ich würde einfach summewenns() verwenden:
Code:
=SUMMEWENNS(Tabelle1[Preis];Tabelle1[Datum];">"&MONATSENDE(H16;-1);Tabelle1[Datum];"<="&MONATSENDE(H16;0))
Gruß Holger
Antworten Top
#4
kleine Spielerei mit ein paar variablen Vorgaben aus Zellen siehe Datei.

.xlsx   Mit let Daten aus Liste filtern.xlsx (Größe: 14,05 KB / Downloads: 6)

Gruß Uwe
Antworten Top
#5
(20.04.2026, 11:40)echo schrieb: In deiner Formel verwendest du "art" "dat" und "p", die Bezüge sind im Namenmanager nicht definiert.
Ich würde einfach summewenns() verwenden:
Code:
=SUMMEWENNS(Tabelle1[Preis];Tabelle1[Datum];">"&MONATSENDE(H16;-1);Tabelle1[Datum];"<="&MONATSENDE(H16;0))
Gruß Holger

Hi Ihr Zwei,

erstmal Danke für Eure Rückmeldungen. Ist aber nicht ganz das, was ich suche, weil Ihr zwar einen Zeitraum eingrenzt, aber die Liste der gesuchten Einzeldaten

01.01.2026
02.01.2026
03.02.2026
03.03.2026


nicht berücksichtigt. 
Es soll also (nur) nach der Liste dieser 4 Tagesdaten gefiltert werden. Wobei die Anzahl der ermittelten Daten ja nicht zwangsläufig  statisch sein muss....
Deshalb nochmal nachgefragt... kann man Filtern auf Listen anwenden? In PQ wäre das kein Problem, sollte also auch als Formel funktionieren, oder doch nicht? Wäre ja auch eine mögliche Antwort...

PS: Sorry! Vermutlich hab ich mich oben unklar ausgedrückt. Zunächst sollen alle eindeutigen Daten ermittelt werden, wo bei Art ein "A" steht. Danach soll die Summe aller Preise dieser Datumsliste ermittelt werden. Unabhängig davon, was in Art steht.

Und das entsprechende Ergebnis hatte ich auch falsch angegeben, Korrekt müssen es 246,9 € sein.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#6
Hallo Ralf,

da hast du einen kleinen Rechenfehler. Die Teilsummen für die genannten Datumse: 101 + 0,2 + 0,6 + 85=186,8

hier mal die Formel dazu (Teilsummen):
Code:
=LET(xA;EINDEUTIG(FILTER(Tabelle1[Datum];Tabelle1[Art]="A"));MAP(xA;LAMBDA(d;SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Art]="A")*(Tabelle1[Datum]=d))))))
Für die Gesamtsumme brauchst du nur MAP() in die Summe einschließen.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Ralf A
Antworten Top
#7
(20.04.2026, 12:16)Egon12 schrieb: Hallo Ralf,

da hast du einen kleinen Rechenfehler. Die Teilsummen für die genannten Datumse: 101 + 0,2 + 0,6 + 85=186,8

hier mal die Formel dazu (Teilsummen):
Code:
=LET(xA;EINDEUTIG(FILTER(Tabelle1[Datum];Tabelle1[Art]="A"));MAP(xA;LAMBDA(d;SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Art]="A")*(Tabelle1[Datum]=d))))))
Für die Gesamtsumme brauchst du nur MAP() in die Summe einschließen.

Gruß Uwe

...jepp... das wars! In Lambda nur noch den Filter nach Art entfernt, und schon passt es. Danke!  78

=SUMME(LET(xA;EINDEUTIG(FILTER(Tabelle1[Datum];Tabelle1[Art]="A"));MAP(xA;LAMBDA(d;SUMME(FILTER(Tabelle1[Preis];Tabelle1[Datum]=d))))))
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#8
Hi
Filtern nach Liste:
ja man kann nach einer Liste filtern, wenn der Vergleich mit der Liste mit "=" erfolgen kann (keine Teilübereinstimmung)

mal für dein Beispiel: 
summe der Preise für Art "A" und alle Datumswerte, die in Tabelle 3 gelistet sind:

=SUMME(FILTER(Tabelle1[Preis];ZÄHLENWENNS(H16#;Tabelle1[Datum]);0))


das Summieren über einen Datumsbereich geht, wenn es sich um einen Monat handelt auch so, dann braucht man nur ein Kriterium
(das mit Filtern nach von - bis wurde ja schon gezeigt):

=SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Art]="A")*(TEXT(Tabelle1[Datum];"JJJJMM")="202601");0))


Gruß Daniel
[-] Folgende(r) 1 Nutzer sagt Danke an slowboarder für diesen Beitrag:
  • Ralf A
Antworten Top
#9
(20.04.2026, 12:16)Egon12 schrieb:
Code:
=LET(xA;EINDEUTIG(FILTER(Tabelle1[Datum];Tabelle1[Art]="A"));MAP(xA;LAMBDA(d;SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Art]="A")*(Tabelle1[Datum]=d))))))

Hi Uwe,
zu früh gefreut...
xA ist klar. die eindeutige Liste aller Daten, wo Art = "A" ist. Also die Datumsliste...
Danach hab ich noch massive Verständnisprobleme. Ab Map(xA;... hört das Verstehen eigentlich auf. 
Vorallem was den Datumsfilter in LAMBDA betrifft. 
Wieso wird der hier als d deklariert? 
Welchen Wert hat denn d und wo und wie wird d gebildet? 
MAP(xA;LAMBDA(d;SUMME(FILTER(Tabelle1[Preis];(Tabelle1[Art]="A")*(Tabelle1[Datum]=d))))))

Du filterst ja [Datum] nach d, aber wie d gebildet wird, ist mir ein Rätsel...  ist  LAMBDA(d; Filter(...Tabelle1[Datum]=d)))))) nicht irgendwie ein Zirkelbezug oder d nicht null? 
Kannst Du das bitte mal kurz erklären?
Danke!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#10
Hallo Ralf,

nein es ist kein Zirkelbezug, der Parameter d (schreibe ich meist für Datum u für Uhrzeit, sp für Spalte, z für Zeile) ist wie in VBA eine Kombination Schleifenzähler/Matrixzellwert und in dem Falle ein Datum (wobei hier Schleifenzähler nicht ganz korrekt ist, da MAP die Matirx intern abklappert). 

Stell dir vor (VBA) die Datumswerte sind in einem Array und Zelle für Zelle wird ausgelesen. Der Parameter d durchläuft Die Matrix und enthält in jeden Schleifendurchlauf das Datum der jeweiligen Arrayzelle. 
Die Kürzel für die Parameter kannst du dir auch deinen eigenen (VBA) Gewohnheiten passend benennen.

Ich hoffe, dass ich das brauchbar rüberbringen konnte.
 
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Ralf A
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste