Разделение нескольких диапазонов из одного диапазона в Google Таблицах - PullRequest
1 голос
/ 04 августа 2020

Я создаю инструмент планирования для своей компании. Структура моего документа в Google Таблицах представляет собой сводную страницу со всем графиком, изложенным для каждого сотрудника в каждом отделе. Затем каждый сотрудник получает свой лист. В каждом листе сотрудников у меня есть разделы для воскресенья, понедельника и вторника (дни работы каждого сотрудника). В каждом разделе по дням у меня есть столбец с указанием часов на часах, а затем столбец для каждого отдела. Я установил флажок в каждую ячейку и могу активировать флажок, чтобы указать, что этот сотрудник будет работать в этом отделе в соответствующее время. Однако бывают случаи, когда сотрудник находится в отделе более одного раза в день, что означает, что столбец с флажками имеет, например, отметки в ячейках, соответствующих 7:00 - 10:00 и 14:00 - 17:00, с не отмеченными флажками в ячейках. что соответствует 11.00-13.00.

Пример одного дня

У меня есть функции запросов, которые могут извлекать время начала и окончания в этом отделе, если сотрудник находится в этом отделе только один раз в день. Результат после некоторой конкатенации выглядит примерно так: «7 утра-2 вечера».

=QUERY(A4:C17, "Select MIN(A) where (C=TRUE)")
=QUERY(A4:C17, "Select MAX(A) where (C=TRUE)")

Однако я не могу придумать способ различать несколько значений времени начала и окончания. Используя приведенный выше пример, я хотел бы, чтобы мои выходные данные были «7 утра-10 утра» и «14 вечера-5 вечера». Они могут быть в разных ячейках или в одной ячейке, для меня это не имеет значения. Также могут быть формулы в нескольких ячейках, если последующая формула должна работать с предыдущей.

Надеюсь, это имеет смысл в том виде, как я это описал. Я неделями боролся, пытаясь что-то придумать, и у меня заканчивается время. Спасибо за любую помощь!

1 Ответ

2 голосов
/ 04 августа 2020

попробуйте:

=ARRAYFORMULA(IFNA(TEXTJOIN(CHAR(10), 1, 
 TEXT(FILTER($A4:$A17, IF((B4:B17=TRUE)*({FALSE; B4:B16}=FALSE), 1, )=1), "hh:mm\ - ")&
 TEXT(FILTER($A4:$A17, IF((B4:B17=TRUE)*({B5:B17; FALSE}=FALSE), 1, )=1), "hh:mm"))))

введите описание изображения здесь

...