Условный формат динамического календаря на основе заезда и выезда гостей - PullRequest
1 голос
/ 06 октября 2019

Я создал динамический календарь здесь , который вы можете просмотреть / загрузить для тестирования.

Вы увидите, что каждый день месяца состоит из 3 ячеек. Центральная ячейка должна идентифицировать критические изменения, которые происходят, когда один гость уходит в тот же день, когда прибывает другой. В этом случае левая ячейка будет заполнена светло-красным цветом, центр - глубоким красным, а правая ячейка - красным. Когда гость выписывается, но не происходит критического изменения, левая ячейка будет заполнена светло-красным цветом, а центральная и правая ячейки - зеленым (например, 21 декабря 2019 года, как показано ниже). Изображение ниже указывает на предполагаемый шаблон в других сценариях.

Теперь мне нужно создать формулу для условного форматирования 3 ячеек в каждой [date]. Если в моих данных (на отдельной вкладке) не было пустых строк, когда свойство не занято, я мог бы использовать формулу =COUNTIFS([Check-in_range],"<="&[date],[Check-out_range],">="&[date])>0, чтобы определить, когда наступили дни прибытия / отъезда. Однако, с пустыми строками для каждой недели сезона аренды в данных (по личным причинам), как я могу уточнить формулу?

enter image description here

Ответы [ 2 ]

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

Учитывая изменение обстоятельств, я составлю новый ответ здесь.

Предположим, у вас есть следующие именованные диапазоны :

  • Start_Date - все даты начала в вашей справочной таблице;
  • End_Date - все даты окончания (Start_Date + Nights) в вашей справочной таблице;
  • Имя - все имена в вашей справочной таблице;
  • CCO - все критические даты перехода, которые можно найти с помощью следующей формулы, если выназвали столбцы, как показано ниже в таблице : =IFERROR(IF(AND(MATCH([@[End Date]],[Start Date],0)>0,AA6<>0,AA7<>0),[@[End Date]],""),""), где AA6 - это имя в той же строке, а AA7 - это имя в следующей строке.

Named Ranges

Затем выполните шаги для настройки условного форматирования. Обратите внимание, что следующие действия выполняются в Excel, но не на google-листов , и все ссылки на ячейки основаны на предыдущем образце рабочей книги , который вы указали в предыдущем вопросе. Ссылка, которую я предоставил, является окончательной рабочей книгой со всеми условными форматами, поэтому вы можете скачать ее и протестировать в Excel.

Чтобы настроить форматирование для даты критического изменения :

| Formatting for CCO |                     |                                    |
|--------------------|---------------------|------------------------------------|
| Section            | Formatting Rule     | Formatting Range                   |
| Sun                | =MATCH($D5,CCO,0)>0 | $C$5,$C$12,$C$19,$C$26,$C$33,$C$40 |
| Mon                | =MATCH($G5,CCO,0)>0 | $F$5,$F$12,$F$19,$F$26,$F$33,$F$40 |
| Tue                | =MATCH($J5,CCO,0)>0 | $I$5,$I$12,$I$19,$I$26,$I$33,$I$40 |
| Wed                | =MATCH($M5,CCO,0)>0 | $L$5,$L$12,$L$19,$L$26,$L$33,$L$40 |
| Thu                | =MATCH($P5,CCO,0)>0 | $O$5,$O$12,$O$19,$O$26,$O$33,$O$40 |
| Fri                | =MATCH($S5,CCO,0)>0 | $R$5,$R$12,$R$19,$R$26,$R$33,$R$40 |
| Sat                | =MATCH($V5,CCO,0)>0 | $U$5,$U$12,$U$19,$U$26,$U$33,$U$40 |

Чтобы настроить форматирование для каждого дневного раздела :

| Section | Formatting Rule                        | Formatting Range                                                      |
|---------|----------------------------------------|-----------------------------------------------------------------------|
| Sun     | =ISTEXT(LOOKUP($D5-1,Start_Date,Name)) | $B$5,$B$12,$B$19,$B$26,$B$33,$B$40                                    |
| Sun-Mon | =ISTEXT(LOOKUP($D5,Start_Date,Name))   | $C$5:$E$5,$C$12:$E$12,$C$19:$E$19,$C$26:$E$26,$C$33:$E$33,$C$40:$E$40 |
| Mon-Tue | =ISTEXT(LOOKUP($G5,Start_Date,Name))   | $F$5:$H$5,$F$12:$H$12,$F$19:$H$19,$F$26:$H$26,$F$33:$H$33,$F$40:$H$40 |
| Tue-Wed | =ISTEXT(LOOKUP($J5,Start_Date,Name))   | $I$5:$K$5,$I$12:$K$12,$I$19:$K$19,$I$26:$K$26,$I$33:$K$33,$I$40:$K$40 |
| Wed-Thu | =ISTEXT(LOOKUP($M5,Start_Date,Name))   | $L$5:$N$5,$L$12:$N$12,$L$19:$N$19,$L$26:$N$26,$L$33:$N$33,$L$40:$N$40 |
| Thu-Fri | =ISTEXT(LOOKUP($P5,Start_Date,Name))   | $O$5:$Q$5,$O$12:$Q$12,$O$19:$Q$19,$O$26:$Q$26,$O$33:$Q$33,$O$40:$Q$40 |
| Fri-Sat | =ISTEXT(LOOKUP($S5,Start_Date,Name))   | $R$5:$T$5,$R$12:$T$12,$R$19:$T$19,$R$26:$T$26,$R$33:$T$33,$R$40:$T$40 |
| Sat-Sun | =ISTEXT(LOOKUP($V5,Start_Date,Name))   | $U$5:$V$5,$U$12:$V$12,$U$19:$V$19,$U$26:$V$26,$U$33:$V$33,$U$40:$V$40 |

Обратите внимание, что форматирование для CCO должно заниматьвыше форматирования для дневной секции в Conditional Formatting Rules Manager, как показано ниже:

CFRM

Подсказкаиспользуйте Format Painter для быстрого «создания» правил условного форматирования по разделам, однако каждое скопированное правило необходимо изменить, указав правильный диапазон форматирования и правило форматирования , как указано выше.

Второй совет: вы можете скопировать и вставить один набор из диапазона форматирования и правила форматирования в виде текстовой строки в ячейку, сделайте несколько копий текстовых строкзатем используйте функцию Find and Replace (как показано ниже) для массового изменения ссылок на ячейки, а затем обновите диапазон форматирования и правило форматирования по одному.

FNR

Обратите внимание, что в заголовке строки дней не будет пустых или белых ячеек. Заголовки всех дней заполнены светло-зеленым цветом в качестве цвета фона по умолчанию, и цвет будет изменен правилами форматирования.

Также я настроил следующее правило, чтобы «скрывать» нули, возвращаемые вашей функцией VLOOKUP. в строке NAME, EMAIL и PHONE. Логика заключается в том, чтобы отформатировать цвет шрифта на белый для 0 (zero), если фоновым цветом по умолчанию для строки является белый, или светло-серым для строки по умолчанию на светло-сером фоне. Вы можете настроить правило для одной строки, а затем использовать Format Painter, чтобы скопировать то же правило для похожих строк.

hide zeros

Вот живойдемо:

Live Demo

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1110 *

0 голосов
/ 09 октября 2019

Если формула условного форматирования из вашего вопроса сработала нормально, настройка для работы с пустыми строками является относительно простой. Попробуйте следующую формулу:

=COUNTIFS([Check-in_range],"<="&[date],[Check-out_range],">="&[date],[Name_range],"<>")>0

В этом случае [Name_range] должен ссылаться на столбец D вашего листа Data.

Однако, насколько я вижу, эта формула будетприменяются только к тем ячейкам, которые содержат дату, которая не приведет к представленной вами картинке. Разрывы строк делают это немного сложнее. Дайте мне знать, если вам нужна помощь в этом.

Для упрощения я бы порекомендовал закрасить ячейки светло-зеленым, так как это по умолчанию. Условное форматирование затем перезапишет цвет ячейки при необходимости.

...