![](https://cdn.wiki-base.com/8828188/excel_formula_sum_first_n_matching_values__2.png.webp)
Обща формула
=SUM(INDEX(FILTER(range,logic),SEQUENCE(n,1,1,1)))
Обобщение
За да сумирате първите n съвпадащи стойности в набор от данни, можете да използвате формула, базирана на функциите FILTER и SEQUENCE. В показания пример формулата в клетка G5, копирана надолу, е:
=SUM(INDEX(FILTER(score,name=F5),SEQUENCE(3,1,1,1)))
където име (B5: B16) и резултат (C5: C16) са наименувани диапазони.
Обяснение
Функцията FILTER, нова в Excel 365, може да помогне за опростяване на някои трудни проблеми с формулата.
В този пример целта е да се сумират първите 3 резултата както за Джейк, така и за Хейли, в зависимост от реда, в който се появяват в таблицата. Общо има 12 точки, а Джейк и Хейли имат по 6 точки.
Работейки отвътре навън, първата задача е да генерира списък с резултати за всяко име. Това се прави с функцията FILTER:
FILTER(score,name=F5)
С "Jake" в клетка F5, резултатът е масив с всички резултати на Jake като този:
(6;5;7;7;6;8)
Този масив се връща към функцията INDEX като аргумент на масива:
INDEX((6;5;7;7;6;8),SEQUENCE(3,1,1,1))
Функцията SEQUENCE се използва за генериране на стойността за номер на ред и връща масив с 3 числа,
SEQUENCE(3,1,1,1) // returns (1;2;3)
На този етап можем да напишем INDEX частта от формулата по следния начин:
INDEX((6;5;7;7;6;8),(1;2;3))
INDEX връща стойностите, свързани с първите 3 реда в масива към функцията SUM:
=SUM((6;5;7)) // returns 18
и SUM връща сумата от тези стойности като краен резултат в G5. Когато формулата се копира до клетка G6, резултатът е сумата от първите 3 резултата на Хейли.
Сумирайте последните n съвпадащи стойности
За да сумирате последните n съвпадащи стойности, можете да адаптирате формулата по следния начин:
=SUM(INDEX(FILTER(score,name=F5),SEQUENCE(3,1,SUM(--(name=F5)),-1)))
Тази формула е обяснена по-подробно тук.