
Formuła ogólna
=SUM(INDEX(FILTER(range,logic),SEQUENCE(n,1,1,1)))
Podsumowanie
Aby zsumować pierwsze n pasujących wartości w zestawie danych, można użyć formuły opartej na funkcjach FILTER i SEQUENCE. W przedstawionym przykładzie formuła w komórce G5 skopiowana w dół to:
=SUM(INDEX(FILTER(score,name=F5),SEQUENCE(3,1,1,1)))
gdzie nazwa (B5: B16) i wynik (C5: C16) to nazwane zakresy.
Wyjaśnienie
Funkcja FILTER, nowa w programie Excel 365, może pomóc w uproszczeniu niektórych trudnych problemów z formułami.
W tym przykładzie celem jest zsumowanie pierwszych 3 wyników Jake'a i Haileya, na podstawie kolejności, w jakiej pojawiają się w tabeli. W sumie jest 12 punktów, a Jake i Hailey mają po 6 punktów.
Pracując od wewnątrz, pierwszym zadaniem jest wygenerowanie listy wyników dla każdego nazwiska. Odbywa się to za pomocą funkcji FILTER:
FILTER(score,name=F5)
Z „Jake” w komórce F5, wynik jest tablicą zawierającą wszystkie wyniki Jake'a w następujący sposób:
(6;5;7;7;6;8)
Ta tablica jest zwracana do funkcji INDEKS jako argument tablicy:
INDEX((6;5;7;7;6;8),SEQUENCE(3,1,1,1))
Funkcja SEQUENCE służy do generowania wartości numeru wiersza i zwraca tablicę z 3 liczbami,
SEQUENCE(3,1,1,1) // returns (1;2;3)
W tym momencie możemy napisać część INDEKS wzoru w następujący sposób:
INDEX((6;5;7;7;6;8),(1;2;3))
INDEKS zwraca wartości związane z pierwszymi 3 wierszami tablicy do funkcji SUMA:
=SUM((6;5;7)) // returns 18
a SUMA zwraca sumę tych wartości jako wynik końcowy w G5. Gdy formuła jest kopiowana do komórki G6, wynikiem jest suma pierwszych 3 wyników Haileya.
Suma ostatnich n pasujących wartości
Aby zsumować ostatnie n pasujących wartości, możesz dostosować formułę w następujący sposób:
=SUM(INDEX(FILTER(score,name=F5),SEQUENCE(3,1,SUM(--(name=F5)),-1)))
Ta formuła jest wyjaśniona bardziej szczegółowo tutaj.