Я использовал этот календарь и заметил, что он работает неправильно, так как иногда выделяет неправильные записи времени.
Например, на листе под названием «Данные», содержащем информацию о встрече, я обнаружил строку, в которой продолжительность времени выделена неточно. Например, если встреча запланирована на 6:00 PM to 6:30 PM, в календаре должна быть выделена конкретная дата с 6:00 PM по 6:30 PM. Однако он выделяет только ячейку 6:00 PM, которая привязана.
Я надеюсь, что кто-то может помочь или предложить лучшую идею, чтобы исправить это. Спасибо
Техническая спецификация
Календарь
Я также прикрепил ссылку на файл, чтобы проверить книгу Ссылка на файл
Формула, которую я использую ниже, я удалил формулу собрания, которая в ней содержится, чтобы выделить только сроки.
=IFERROR(
Control!$D$14&INDEX(tab_calendar_data[Meeting / Deadline],
MATCH(
LARGE(
(tab_calendar_data[Type]=Control!$C$14)*(tab_calendar_data[Start Time]<=$B7)*(tab_calendar_data[End Time]>=$B7)*(tab_calendar_data[Start Date]<=C$6)*(tab_calendar_data[End Date]>=C$6)*
(((WEEKDAY(C$6)<>1)*(WEEKDAY(C$6)<>7)*(tab_calendar_data[Cycle] = "daily"))+
(((WEEKDAY(tab_calendar_data[Start Date])=WEEKDAY(C$6))*(tab_calendar_data[Cycle] = "weekly"))+
((MOD(C$6-tab_calendar_data[Start Date],14)=0)*(tab_calendar_data[Cycle] = "bi-weekly"))+
((MOD(C$6-tab_calendar_data[Start Date],28)=0)*(tab_calendar_data[Cycle] = "monthly"))+
((tab_calendar_data[Start Date]=C$6)*(tab_calendar_data[Cycle] = "one-time"))))
*tab_calendar_data[ID],1),tab_calendar_data[ID],
0)),"")
Ты прав. Не могли бы вы посоветовать, как мне выделить обе ячейки на 30 минут? Как видите, другие ячейки, выделенные красным, также представляют собой 30-минутный интервал времени.


Технически это не ответ, поскольку он касается вопроса в вашем комментарии, а не исходного вопроса...
=IFERROR(
Control!$D$14&INDEX(tab_calendar_data[Meeting / Deadline],
MATCH(
LARGE(
(tab_calendar_data[Type]=Control!$C$14)*(ROUND(tab_calendar_data[Start Time],8)<=ROUND($B7,8))*(ROUND(tab_calendar_data[End Time],8)>=ROUND($B7,8))*(tab_calendar_data[Start Date]<=C$6)*(tab_calendar_data[End Date]>=C$6)*
(((WEEKDAY(C$6)<>1)*(WEEKDAY(C$6)<>7)*(tab_calendar_data[Cycle] = "daily"))+
(((WEEKDAY(tab_calendar_data[Start Date])=WEEKDAY(C$6))*(tab_calendar_data[Cycle] = "weekly"))+
((MOD(C$6-tab_calendar_data[Start Date],14)=0)*(tab_calendar_data[Cycle] = "bi-weekly"))+
((MOD(C$6-tab_calendar_data[Start Date],28)=0)*(tab_calendar_data[Cycle] = "monthly"))+
((tab_calendar_data[Start Date]=C$6)*(tab_calendar_data[Cycle] = "one-time"))))
*tab_calendar_data[ID],1),tab_calendar_data[ID],
0)),"")
Округления необходимы, поскольку в примере E30 на листе календаря tab_calendar_data[End Time]>=$B30 оценивается как последовательность значений FALSE, поскольку последнее [Время окончания], т. е. 0.770833333333333 никогда (вполне) не равно значению в B30 из 0.770833333333334.
Если вы не хотите менять формулу, вместо этого вы можете исключить формулы из диапазона B8:B33, например ввод значения 0.75 в B29 также приведет к тому, что E30 станет красным (если дата в F2 — 1 июня 2020 г.).
Спасибо за подробное рассмотрение формулы. Ваш вклад очень ценен, и ваша проницательность неоценима. Это действительно правильное решение. @Спектральный экземпляр
Я не думаю, что это неправильно: встреча длится 30 минут - и именно это представляет один ряд...