Во-первых, извините за задержку с ответом. У меня была довольно срочная проблема с исправлениями ошибок, которую я должен был затронуть на работе.
Это формула массива, формулы массива должны быть подтверждены нажатием Ctrl + Shift + Enter
MIN -
=SMALL(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30),SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30)),1)
MAX - =LARGE(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30),SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30)),1)
Это выглядит довольно большим, поэтому давайте поговорим об этом:
Возможно, вы заметили, что единственное, что изменилось в этой формуле, это SMALL()
до LARGE()
, это потому, что массив SUMIFS()
обрабатывает итоговую сумму за каждый день для этих "Инициалов человека".
SUMIFS([amounts to sum],[dates],
Здесь мы остановимся, чтобы получить массив дат для критерия 1 из SUMIFS()
:
IF([name initials]=[person initials],[dates])
Поскольку это массив, мы получаем список совпадающих дат или FALSE
, например: {43252;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;43301;43301;FALSE;43301;FALSE;FALSE;FALSE;FALSE;43342;43342;FALSE;FALSE;FALSE;FALSE;FALSE;43317;43317;43317}
Это первый критерий, а вторым критерием является просто «Имя (инициалы)»
,[name initials],[person initials])
Теперь у нас есть массив 0, где критерии не соответствуют и суммы, которые мы хотели бы оценить.
Чтобы сделать данные полезными для нас, мы используем двоичную природу Excel в том смысле, что 0 будет читаться как результат FALSE
для оператора IF()
:
IF([result from formula],[result from formula])
Это переводит результат SUMIFS()
обратно либо в FALSE
, либо в наши итоги.
Теперь мы можем свободно использовать MIN([formula])
или SMALL([formula],1)
, чтобы получить наше наименьшее значение.
Поскольку 0 не будет возвращено из максимума при условии, что у вас есть совпадающие значения, вам не нужно фактически выполнять двоичный трюк для MAX([formula])
или LARGE([formula],1)
:
=MAX(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30))
Опять же, извините за задержку, и я ценю, что это много, так что не стесняйтесь задавать любые вопросы.