3

У меня есть таблица процессов и их соответствующие времена начала и окончания (рассчитанные по времени начала и продолжительности), перечисленные по идентификатору процесса:

Run ID  Duration    Start Time  End Time
200878  464     5/16/11 4:15    5/16/11 11:59
200879  76      5/16/11 4:22    5/16/11 5:38
200880  165     5/16/11 6:29    5/16/11 9:14
200881  44      5/16/11 9:44    5/16/11 10:28

Мне нужен способ преобразования данных в "временные интервалы" для подсчета количества запущенных процессов в течение каждого часа с использованием встроенных сводных таблиц Excel.

Для приведенной выше выдержки я хочу эту диаграмму:

Timeslot Start  Timeslot End    Running Processes
5/16/11 3:00    5/16/11 4:00    0
5/16/11 4:00    5/16/11 5:00    2
5/16/11 5:00    5/16/11 6:00    2
5/16/11 6:00    5/16/11 7:00    2
5/16/11 7:00    5/16/11 8:00    2
5/16/11 8:00    5/16/11 9:00    2
5/16/11 9:00    5/16/11 10:00   3
5/16/11 10:00   5/16/11 11:00   2
5/16/11 11:00   5/16/11 12:00   1

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

  • Время начала временного интервала необходимо вводить вручную и расширять, чтобы охватить диапазон времени, представленный в исходной таблице.
  • Ни один из механизмов фильтрации собственных сводных таблиц Excel не работает, как срезы, или упорядочивает по другим параметрам (мои фактические данные имеют другие поля, кроме "Идентификатор запуска", который был удален для краткости)

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

Я также возился с добавлением группировки по часам / дням / месяцам / годам в сводной таблице, но даже с опцией "Показывать элементы без данных" тот факт, что процессы могут длиться более одного часа, вызывает занижение отчетности (процессы которые охватывают определенный временной интервал, но не начинаются и не заканчиваются в нем, не учитываются для этого временного интервала.)

Для вашего эксперимента вот файл xlsx с некоторыми данными и моей собственной базой SUMIFS: http://dl.dropbox.com/u/123900/timeslot%20pivot.xlsx

1 ответ1

0

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

=COUNT(IF((H2>=$C$2:$C$50)*(H2<=$D$2:$D$50)+(I2>=$C$2:$C$50)*(I2<=$D$2:$D$50)>0,1,""))

Введите это как формулу массива, нажав Ctrl+Shift+Enter. Столбец H содержит начало временного интервала, столбец I - конец временного интервала, столбец C - время начала в вашей таблице процессов, а столбец D - время окончания в вашей таблице процессов. Обратите внимание, что вы можете настроить формулу так, чтобы она выходила далеко за пределы таблицы процессов, поэтому, если список процессов постоянно меняется, ваша формула подсчета все равно будет возвращать правильный результат.

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