=sumproduct(($K$2:$K$1000<=U2)*($L$2:$L$1000>=U2))
Это будет подсчитывать количество случаев, когда начальное время меньше или равно времени в U2, а конечное время больше или равно U2. Он будет проверять время от строки 2 до строки 1000. Каждый раз, когда проверяется одно условие и его истинно, сравнение приведет к значению ИСТИНА и ЛОЖЬ, если оно не истинно. * Действует как условие AND, в то время как одновременно преобразует значения TRUE и FALSE в 1 и 0. Таким образом, оба условия должны быть истинными, чтобы в результате получилось значение 1. Затем Sumproduct суммирует все 1 и 0, чтобы получить счет.
Чтобы рассмотреть дни недели, вам понадобится одна вещь, чтобы быть правдой. Ваши заголовки в M1: S1 должны быть уникальными (как я полагаю). Вам нужно будет либо повторить их в соседних столбцах с буквой M, либо, скажем, V1, у вас есть ячейка, которая может измениться на заголовок интересующего вас дня недели. Я бы предположил первый, чтобы вы могли видеть каждый день на в то же время.
Для этого нужно добавить больше условий и обратить внимание на ссылочные блокировки $.
В V2 вы можете использовать следующую формулу и копировать вниз и вправо по мере необходимости:
=sumproduct(($K$2:$K$1000<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000))
ОБНОВЛЕНИЕ # 1
ВЫПУСК 1 Диапазоны времени, заканчивающиеся на следующий день (после полуночи)
Он основан на предположении, что время окончания позже, чем время начала. Например, когда смена начинается в 22:00 и заканчивается в 6:30, наш ум говорит, что 06:30 позже 22:00, потому что это следующий день. Excel, однако, не имеет ни малейшего представления о том, что 0630 следующий день и без дополнительной информации предполагает, что это тот же день. В Excel дата хранится как целое число, а время - как десятичное. Когда вы вводите время только во время ввода, для даты используется 0.
В Excel дата - это количество дней с 1900/01/00. Так что один из способов справиться со своим временем - добавить день. Таким образом, Excel узнает, что ваше время вышло за вами, когда час фактически наступил раньше.
См. Пример данных ниже.
Используя ваши примерные данные, я сделал прямую копию значения в L и поместил его в M (=L3
и скопировал вниз). Затем я изменил формат отображения ячейки время от времени в общем. Это позволяет вам увидеть, как Excel видит время. Обратите внимание, что все время меньше 1.
В столбце N я добавил 1 к значению, когда время выхода было меньше времени, чтобы указать, что это был следующий день, и мы фактически не изобрели путешествие во времени. Я также использовал уловку математической операции, которая преобразует результат ИСТИНА / ЛОЖЬ в 1 или 0, чтобы сократить уравнение. Я использовал =M3+(L3<K3)
и скопировал вниз. Вы заметите в зеленых полосах, что значения теперь больше 1.
В следующем столбце я просто скопировал значения из N, используя скопированную =N3
, а затем применил только формат отображения времени для ячейки. Поскольку это только формат времени, дата игнорируется, и визуально ваше время в столбце O выглядит так же, как в столбце L. Большая разница в том, что Excel теперь знает, что это следующий день.
вы можете быстро исправить время простоя, используя следующую формулу в пустом столбце, а затем скопировать результаты и вставить их обратно в исходный столбец, используя специальные значения вставки.
=M2+(L2<K2)
Следующая часть предназначена для проверки вашего времени. Когда вы смотрите на время 12:00, вам нужно посмотреть на 1200 текущего дня в случае смены, начатой в 12:00, и вам нужно посмотреть на период 1200 следующего дня. Для этого нам нужно изменить исходную формулу следующим образом:
=sumproduct(($K$2:$K$1000<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000)+($K$2:$K$1000<=$U2+1)*($L$2:$L$1000>=$U2+1)*(M$2:M$1000))
Обратите внимание, что + в середине (M $ 2: M $ 1000) + ($ K $ 2: $ K $ 1000 <= $ U2 + 1)? Это + действует как функция ИЛИ. </p>
Issue 2 Time In / Out 15-минутные приращения, диапазон 30-минутных приращений
Этого можно достичь с помощью функции ROUNDDOWN или MROUND. Я бы сочетал это с функцией ВРЕМЯ. Как правило, вы хотите, чтобы время начала четверти часа считалось на 15 минут раньше.
=ROUNDDOWN(E3/TIME(0,30,0),0)*TIME(0,30,0)
Where E3 is your time to be converted
Так что ваша формула может выглядеть примерно так:
=sumproduct((ROUNDDOWN($K$2:$K$1000/TIME(0,30,0),0)*TIME(0,30,0)<=$U2)*($L$2:$L$1000>=$U2)*(M$2:M$1000)+((ROUNDDOWN($K$2:$K$1000/TIME(0,30,0),0)*TIME(0,30,0)<=$U2+1)*($L$2:$L$1000>=$U2+1)*(M$2:M$1000))
аналогичная опция может быть использована для времени ухода и округления до следующего 30-минутного интервала. В этом случае просто используйте функцию ROUNDUP. Хотя я не уверен, что это необходимо.