Excel: подсчитать общее количество расписаний с интервалом в 30 минут с учетом дня - PullRequest
0 голосов
/ 29 августа 2018

Оценивая, сколько операторов можно добавить в определенное время дня, не превышая количество мест в колл-центре, я пытаюсь определить, сколько операторов запланировано на каждый получасовой интервал в каждый день недели.

Используя формулу =SUMPRODUCT(((A$2:A$1000<=D2)+(B$2:B$1000>D2)+(A$2:A$1000>B$2:B$1000)=2)+0), я смог определить, сколько всего агентов работает за каждый интервал, однако это не учитывает день недели.

У меня сейчас настроена электронная таблица следующим образом:

https://i.stack.imgur.com/mHER.png

K - время начала смены, L - время окончания смены, M - S извлекает данные из другого листа, которые показывают 1, если агент работает в этот день недели, и 0, если они не работают, и тогда U имеет все перечисленные временные интервалы. В этом примере он обрезан, но столбцы продолжаются вниз по мере необходимости. U идет к 49, и я только что использовал диапазон от 2 до 500 для остальных, так как в настоящее время у нас не так много смен, и на данный момент я оставляю место.

После некоторого поиска в Google, я попытался =SUMPRODUCT(--(M2:M500="1"),(((K$2:K$1000<=U2)+(L$2:L$1000>U2)+(K$2:K$1000>L$2:L$1000)=2)+0)), но он возвращает только # ЗНАЧЕНИЕ! поэтому я не уверен, что я делаю не так.

Любые предложения о том, как я могу сделать эту работу? Пожалуйста, дайте мне знать, будет ли полезной дополнительная информация. Благодаря.

1 Ответ

0 голосов
/ 30 августа 2018
=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 теперь знает, что это следующий день.

Time Correction

вы можете быстро исправить время простоя, используя следующую формулу в пустом столбце, а затем скопировать результаты и вставить их обратно в исходный столбец, используя специальные значения вставки.

=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. Хотя я не уверен, что это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...