
Я хотел бы найти способ разделить период времени на 4 часовых часовых пояса. То есть, если часть оборудования недоступна с 09:00 до 17:00, то это 8 часов, но мне нужно показать это в 4-часовом периоде 00 - 04:00, 04:00 - 08:00, 08:00 - 12:00 и т. д., чтобы оборудование было недоступно в течение 3 часов в интервале времени 08:00 - 12:00, в течение 4 часов в интервале времени 12:00 - 16:00 и в течение 1 часа в интервале времени 16:00 - 20:00. Оборудование может быть недоступно в течение любого периода времени свыше 24 часов, и в данный момент я кропотливо вручную делю время и надеюсь, что, возможно, есть более простой способ.
решение1
Я решил ответить на этот вопрос, хотя вам действительно следует продемонстрировать все предпринятые вами попытки и то, как это настраивается.
Ниже представлена моя настройка. Вы вводите From и to в столбцы A и B, и он разбивает их на показанные ячейки.
В ячейке C4 формула будет иметь вид:
=IF($B4>$A4,
IF(OR(AND($A4<C$2,$B4<C$2),AND($A4>C$3,$B4>C$3)),0,MIN($B4,C$3)-MAX($A4,C$2)),
IF(OR(AND($B4<C$2,$A4<C$2),AND($B4>C$3,$A4>C$3)),(C$3-C$2),(C$3-C$2)+(MIN($B4,C$3)-MAX($A4,C$2)))
)
Или с именами ячеек это будет выглядеть так:
=IF(FROM>TO,
IF(OR(AND(TO<BIN_FROM,FROM<BIN_FROM),AND(TO>BIN_TO,FROM>BIN_TO)),0,MIN(FROM,BIN_TO)-MAX(TO,BIN_FROM)),
IF(OR(AND(FROM<BIN_FROM,TO<BIN_FROM),AND(FROM>BIN_TO,TO>BIN_TO)),(BIN_TO-BIN_FROM),(BIN_TO-BIN_FROM)+(MIN(FROM,BIN_TO)-MAX(TO,BIN_FROM)))
)
Разбито:
Первый оператор if проверяет, происходит ли событие в течение одного 24-часового периода (To следует за from), в противном случае оно должно быть перенесено на следующий день.
Вторая строка проверяет, находятся ли оба времени за пределами диапазона ячейки (либо оба меньше, либо оба больше), если это так, то в этой ячейке нет данных. Если они не оба за пределами, то данные там есть. Вычитая максимальное значение from из минимального значения to, вы получаете, сколько времени находится в ячейке.
Третья строка похожа на вторую, но она определяет, сколько времени прошло.нетв корзине и вычитает это значение из полной ширины корзины.
решение2
Вот решение, которое показывает время в «часовом поясе» (ячейках):
(т.е. оборудование недоступно с 09:00 до 12:00, с 12:00 до 16:00 и с 16:00 до 17:00). Формулы в ячейках D5
- D7
следующие:
D5 = =IF(AND($B5>D$2,$B5<D$3), $B5, IF(AND($B5<D$2,$B6>D$2), D$2, ""))
D6 = =IF(AND($B6>D$2,$B6<D$3), $B6, IF(AND($B5<D$3,$B6>D$3), D$3, ""))
D7 = =IF(OR(D5="",D6=""), "", D6-D5)
Объяснение:
=IF(AND($B5>D$2,$B5<D$3), $B5, …
– еслиОтвремя (время начала недоступности оборудования) находится в пределах этого бина, то отобразитеОтвремя.… IF(AND($B5<D$2,$B6>D$2), D$2, …
– если время начала данного бина попадает в период недоступности оборудования, то отобразить время начала данного бина.… ""))
– в противном случае пусто.
Как показано выше, это не обрабатывает многодневные периоды недоступности оборудования напрямую. Но вы можете заставить это работать, явно установивКвремя быть на следующий день: