Как рассчитать (обобщить) правильный процент в течение 24 часов (не должен превышать 100%) - PullRequest
1 голос
/ 30 октября 2019

Тема звучит просто, но интересующая меня задача не такова!

Итак, я получил набор данных измерений, которые меняются за день, с большим количеством экземпляров в течение одного дня! Итак, как вы можете видеть на 07.02.2019, у вас есть 5x экземпляров, которые меняются (системные изменения) с разницей во времени. Ну, в том-то и дело, мне нужно, чтобы оно было в процентах, но в течение 24 часов! не так, как вы можете видеть на этом примере более 100%, что это чепуха.

Данные сами записывают данные постоянно, и смена системы происходит автоматически. Иногда у вас может быть 1-2 экземпляра в день, а иногда более 5x ..

Я сделал несколько вычислений, используя =mod для разницы во времени (d2-d1,1) и =sumifs для предоставления мне СУММЫ одного дня на систему, но это неверно, потому что оно берет также разницу во времени с предыдущим днем ​​и суммирует ее ...

Можно ли каким-то образом ограничиться максимум 24 ч? не рассчитывать разницу во времени, когда это происходит в течение 24 часов ??

Надеюсь, вы поняли мое беспокойство ... это лишь малая часть полной картины, есть больше событий, где у меня более 100% ....

Я имею в виду, что есть способ поставить = MIN(1;I2), но я ограничен только на 100% ... не знаю, правильный ли это подход.

data

Chart

Calculate

enter image description here

1 Ответ

1 голос
/ 30 октября 2019

Хорошо. Возможно, это не совсем то, что вы хотите, но я надеюсь, что это поможет вам ...

У вас есть 3 основных столбца статических данных:

  • Дата
  • НачалоВремя
  • Система

Я начал с объединения «Дата» и «Время начала» в один столбец «Дата начала».

Затем я создал «Finish DateTime "с помощью MINIFS - таким образом, порядок сортировки таблицы не повлияет на данные.

Затем я создал другой столбец, который показывает либо время окончания, либо конец дня,в зависимости от того, что наступит раньше (MIN).

Затем я вычисляю «общую разницу во времени» - просто «Время окончания» минус «Время начала».

Я снова делаю то же самое,но на этот раз для «Полуночного времени окончания отсечки».

Последний добавленный мной столбец помощников показывает, сколько времени прошло после полуночного отсечения. Это просто "Total Time Diff" минус "Midnight Cut Time Diff".

Пока все довольно просто. Вот изображение, которое, я надеюсь, сделает мой макет понятным. (вы можете перемещать или скрывать столбцы по мере необходимости).

enter image description here

Формулы для этих вспомогательных столбцов довольно просты, поэтому я не буду их объяснятьно предоставит их ниже:

Дата начала и времени

Start Datetime:
     =$A3+$B3

Finish Datetime:
     =IF(MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3)=0,"",MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3))

Finish Time (Midnight Cut Off):
     =IF($E3="","",MIN($A3+1,$E3))

Total Time Diff:
     =IF($E3="","",$E3-$D3)

Time diff (Until Midnight):
     =IF($E3="","",$F3-$D3)

Remaining Time (After Midnight):
     =IF($E3="","",$G3-$H3)

----------------------------------------------------------------
РЕДАКТИРОВАТЬ: Уточнение в ответ на комментарий.
----------------------------------------------------------------

Формула «Finish Datetime» на самом деле представляет собой однуMINIFS function.

Это выглядит более сложным, потому что я обернул его в оператор IF, чтобы обработать случай, когда нет времени окончания (то есть мы находимся в этот период времени).

В этом случае, чтобы избежать возврата «01.01.1900» (0), вместо этого он возвращает пустую строку.

Итак, основная MINIFS функция:

MINIFS($D$3:$D$12,$D$3:$D$12,">"&$D3)

Работает, выбирая наименьшее «время начала», которое больше, чем «время начала». (т. е. в следующий раз при запуске.)

Если ваши данные всегда сортируются по возрастанию «Дата начала», вы можете выполнить то же самое, просто =$D4 (т. е. выбрав «Дата начала» в строке ниже),Однако, если вы затем отсортируете данные по-другому, это полностью испортит ваши результаты.

Я всегда предпочитаю делать таблицы "Безопасными для сортировки".

----------------------------------------------------------------
END EDIT
----------------------------------------------------------------

Кроме того, как вы можете видеть, в конце я добавил совершенно отдельную таблицу.

Слева находится список ВСЕХ дат (даже пропущенных в основных данных). И список всех систем, работающих горизонтально (по два столбца на систему, чтобы показать время и процент).

Процент - это просто время для этой конкретной системы, деленное на общее количество для этого конкретного дня.

Трудная часть - отработка времени. Для этого используется следующая формула:

=IF($K3=MAX($A$3:$A$12),"",
    MIN( "24:00:00",
        SUMIFS($H$3:$H$12, $A$3:$A$12, $K3, $C$3:$C$12, L$1)
        +
        MAX(0,
            SUMIFS($I$3:$I$12, $D$3:$D$12, MAXIFS($D$3:$D$12, $A$3:$A$12, "<"&$K3, $C$3:$C$12, L$1), $C$3:$C$12, L$1)
            -
            (   $K3
                -IF(MAXIFS($A$3:$A$12,$A$3:$A$12,"<"&$K3)=0, $K3, MAXIFS($A$3:$A$12,$A$3:$A$12,"<"&$K3)+1)
            )
        )
    )
)

Первая часть, проверяет, есть ли время окончания для рассматриваемой даты, и, если нет, возвращает пробел.

MIN("24:00:00", ... ограничивает время до 24 часов. То есть, если пропущено несколько дней, игнорируется более одного дня (для данной конкретной даты).

Остальная часть формулы в основном:

<Total time diff up until midnight for the particular date & system>
+
<The time remaining after midnight from the day before>
-
<The number of days skipped>

Если у вас есть какие-либо вопросы, пожалуйста,дай мне знать.

...