У меня есть несколько тысяч значений, похожих на показанные на картинке.

Я пытаюсь суммировать значения времени в столбце K, но только если они имеют значение "flag" в столбце M и только последовательные значения.

Например, все ячейки M467-M477 помечены, и при сложении они будут равны ~ 0,017 часа.

Затем ячейки M478-M480 игнорируются, затем ячейки M481-M483 суммируются равными ~ 0,0036 часов и так далее. Что такое автоматизированная формула Excel, которая будет делать это?

Пример значений электронной таблицы

! [введите описание изображения здесь

2 ответа2

0

Если вы хотите, чтобы сумма была в первой строке каждой группы, вы можете использовать эту формулу:

=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 должен иметь дело со строкой заголовка, если строка ниже имеет "Флаг".

0

Опция с вспомогательным столбцом.

Формула в Q2

=IF(AND(M1<>"flag",M2="flag"),K2,IF(AND(M1="flag",M2="flag"),SUM(Q1,K2),""))

и в R2

=IF(Q3="",Q2,"")

Скопируйте вниз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .