Я хотел бы найти способ разделить период времени на 4 часовых часовых пояса. То есть, если единица оборудования недоступна с 09:00 до 17:00, то есть 8 часов, но мне нужно показать это в течение 4 часов: 00 - 0400, 0400 - 0800, 0800 - 1200 и т.д., Чтобы оборудование было недоступно в течение 3 часов во времени слот 0800 - 1200, на 4 часа во временном интервале 1200 - 1600 и 1 час во временном интервале 1600 - 2000. Оборудование может быть недоступно в течение любого периода времени в течение 24 часов, и в данный момент я старательно сокращаю время вручную и надеюсь, что может быть более простой путь.
2 ответа
Я решил ответить на этот вопрос, даже если вы действительно покажете все свои попытки и их настройку.
Ниже моя установка. Вы помещаете ваш От и до в столбцы А и В, и он разделяет его на показанные корзины.
В ячейке 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 is after from), в противном случае он должен быть перенесен на следующий день.
Вторая строка Проверяет, находятся ли оба времени за пределами диапазона бина (либо меньшего, либо большего), если они есть, в этом бине нет данных. Если они не снаружи, там есть данные. Вычитая максимальное из значений from из минимального значения to, вы получаете количество времени в корзине.
Третья линия похожа на вторую, но она находит, сколько времени не в корзине, и вычитает ее из полной ширины корзины.
Вот решение, которое показывает время в «часовых поясах»:
(т. е. оборудование недоступно с 0900 до 1200, с 1200 до 1600 и с 1600 до 1700).
Формулы в ячейках 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, …
- если время запуска этой ячейки находится в пределах периода недоступности оборудования, отобразите время запуска этой ячейки.… ""))
- иначе, пусто.
Как показано выше, это не обрабатывает многодневные периоды недоступности оборудования напрямую. Но вы можете заставить его работать, явно установив время , чтобы быть в следующий день: