Разбирая полученную формулу:
=SUMPRODUCT(($AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9}))))*($AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))
$AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9})))
проверяет, превышает ли AD1 время начала
$AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))
проверяет, является ли AD1 меньше времени окончания
Затем результаты умножаются. Поскольку True
оценивается как 1, а False
- 0, умножение дает только 1, если выполняются оба условия.
В логических терминах:
- AD1 больше времени начала
И
- AD1 меньше времени окончания
Требуется дополнительная логикадля подсчета случаев, когда:
- AD1 больше времени начала
ИЛИ
- AD1 меньше времени окончания
WHILE
- время начала больше времени окончания
Это достигается с помощью:
=SUMPRODUCT((($AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9}))))+($AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))*(INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9})))>INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))
$AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9})))
проверяет, превышает ли AD1 время начала
$AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))
проверяет, меньше ли AD1 время окончания
На этот раз они складываются вместе (ИЛИ)
INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9})))>INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))
проверяет, что время начала больше времени окончания
Эта третья проверка умножается (Иг) с результатом предварительного добавления. Это приводит только к подсчету ситуаций, в которых время начала находится позднее времени окончания (овернайт) и , для которого AD1 находится в течение периода времени.
Таким образом, чтобы подсчитать все желаемые ситуации, вы должны использовать сумму как оригинальной, так и новой частей:
=SUMPRODUCT(($AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9}))))*($AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))+SUMPRODUCT((($AD$1>INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9}))))+($AD$1<INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))*(INDEX(J4:S4,1,N(IF(1,{1,3,5,7,9})))>INDEX(J4:S4,1,N(IF(1,{2,4,6,8,10})))))