Если вы хотите, чтобы сумма была в первой строке каждой группы, вы можете использовать эту формулу:
=IF(AND(M2="Flag",M1<>"Flag"),SUM(K2:INDEX(K2:INDEX(K:K,MATCH(1E+99,K:K)+1),MATCH(TRUE,INDEX(M2:INDEX(M:M,MATCH(1E+99,K:K)+1)="",),0)-1)),"")
Разбивая это:
Два INDEX(K:K,MATCH(1E+99,K:K)+1)
находят последнюю ячейку в столбце K, которая имеет число, и устанавливают ее как экстент указанного диапазона. Таким образом, формула является динамической, так как добавляются новые строки, формула будет корректироваться автоматически.
Затем внутри суммы мы начинаем с ячейки, находящейся в той же строке, K2 является относительным, и по мере того, как формула перемещается вниз, ссылка также перемещается. Конечная ячейка в диапазоне устанавливается с помощью другого INDEX/MATCH.
На этот раз мы ищем первую ячейку строки, в которой формула должна быть пустой в столбце М. Мы устанавливаем эту строку -1 как последнюю строку для SUM().
IF() просто делает все, что мы хотим сделать, суммой, а остальное - пустой строкой.
Если вы хотите, чтобы он находился внизу группы, используйте эту формулу массива:
=IF(AND(M2="Flag",M3=""),SUM(INDEX($K$1:K2,IFERROR(MATCH(2,IF($M$1:M2="",1)),1)+1):K2),"")
Будучи формулой массива, она должна быть подтверждена с помощью Ctrl-Shift-Enter при выходе из режима редактирования. Если все сделано правильно, Excel поместит {}
вокруг формулы.
На этот раз мы ищем последнее пустое место в M над текущей строкой, чтобы установить первую.
IFERROR должен иметь дело со строкой заголовка, если строка ниже имеет "Флаг".