Создаю шахматку гостиницы, в которой вбивая данные гостя на одном листе, на другом листе автоматически закрашиваются клетки номеров занятых гостями. В excel получилось применить формулу =ИЛИ(($A6=Гости!$A$2:$A$156)*(D$4>=Гости!$C$2:$C$156)*(D$4<Гости!$E$2:$E$156)) Однако, когда эту же формулу использую в Google таблицах формула показывается не верной или автоматического закрашиванияне происходит. Во вложении приклепил рабочую exсel. В чем проблема, может для google таблиц нужна другая формула?
Создаю шахматку гостиницы, в которой вбивая данные гостя на одном листе, на другом листе автоматически закрашиваются клетки номеров занятых гостями. В excel получилось применить формулу =ИЛИ(($A6=Гости!$A$2:$A$156)*(D$4>=Гости!$C$2:$C$156)*(D$4<Гости!$E$2:$E$156)) Однако, когда эту же формулу использую в Google таблицах формула показывается не верной или автоматического закрашиванияне происходит. Во вложении приклепил рабочую exсel. В чем проблема, может для google таблиц нужна другая формула?tkryt26
Не помогло, однако вместо того, чтобы вставлять эту формулу в условное форматирование, я поставил ее в сами ячейки. При использовании ArrayFormula писалось ИСТИНА или ЛОЖЬ, при использовании СУММПРОИЗВ 1 или 0. В условном форматировании, поставил если в клетке значение больше или равно 1, то закрасить. Если есть предложения по лучше, то буду рад услышать совет)
Не помогло, однако вместо того, чтобы вставлять эту формулу в условное форматирование, я поставил ее в сами ячейки. При использовании ArrayFormula писалось ИСТИНА или ЛОЖЬ, при использовании СУММПРОИЗВ 1 или 0. В условном форматировании, поставил если в клетке значение больше или равно 1, то закрасить. Если есть предложения по лучше, то буду рад услышать совет)tkryt26
Сообщение отредактировал tkryt26 - Пятница, 07.10.2022, 15:30
В Гугл таблицах в формуле условного форматирования можно напрямую ссылаться на диапазоны только того же листа, где находится УФ. На диапазоны других листов в УФ нужно ссылаться через функцию ДВССЫЛ(INDIRECT):
Цитата
Use advanced conditional formatting
Note: Formulas can only reference the same sheet, using standard notation "(='sheetname'!cell)." To reference another sheet in the formula, use the INDIRECT function.
Вот в таком виде, следуя совету Александра _Boroda_, удалось заставить формулу для УФ работать (формула для ячейки D6): [vba]
Хотя в предпросмотре формулы всё нормально отображает...
В Гугл таблицах в формуле условного форматирования можно напрямую ссылаться на диапазоны только того же листа, где находится УФ. На диапазоны других листов в УФ нужно ссылаться через функцию ДВССЫЛ(INDIRECT):
Цитата
Use advanced conditional formatting
Note: Formulas can only reference the same sheet, using standard notation "(='sheetname'!cell)." To reference another sheet in the formula, use the INDIRECT function.
Вот в таком виде, следуя совету Александра _Boroda_, удалось заставить формулу для УФ работать (формула для ячейки D6): [vba]
Ну, и хорошо! Кстати, можно убрать из формулы опоясывающую функцию OR, единственным предназначением которой здесь является перевод вычисленного по SUMPRODUCT числового значения "не ноль" в TRUE, а "ноль" - в FALSE, так как УФ числовые значения и само неявно использует таким же образом.
А если далее формулу вообще убрать из УФ и ввести в ячейки (выше в процессе поиска решения Вы что-то такое уже и сами делали), то получающиеся значения будут такими: [vba]
Код
0 - номер свободен, 1 - номер занят, 2 и более - номер забронирован дважды (или более, т.е. повторно, "пересечение") и ситуация требует срочного "разруливания".
[/vba]И тогда, действительно, сделать совсем простое УФ: [vba]
Код
на значение 1 - например, красная заливка, как сейчас на значение 2 и более - например, жёлтая заливка - как сигнал "требуется вмешательство".
[/vba]По-моему, будет очень наглядно. К тому же, по вертикали (по датам) Вы дальше, наверняка, ежедневно захотите считать занятые (или свободные) номера - вот тут-то числа и пригодятся.
Ну, и хорошо! Кстати, можно убрать из формулы опоясывающую функцию OR, единственным предназначением которой здесь является перевод вычисленного по SUMPRODUCT числового значения "не ноль" в TRUE, а "ноль" - в FALSE, так как УФ числовые значения и само неявно использует таким же образом.
А если далее формулу вообще убрать из УФ и ввести в ячейки (выше в процессе поиска решения Вы что-то такое уже и сами делали), то получающиеся значения будут такими: [vba]
Код
0 - номер свободен, 1 - номер занят, 2 и более - номер забронирован дважды (или более, т.е. повторно, "пересечение") и ситуация требует срочного "разруливания".
[/vba]И тогда, действительно, сделать совсем простое УФ: [vba]
Код
на значение 1 - например, красная заливка, как сейчас на значение 2 и более - например, жёлтая заливка - как сигнал "требуется вмешательство".
[/vba]По-моему, будет очень наглядно. К тому же, по вертикали (по датам) Вы дальше, наверняка, ежедневно захотите считать занятые (или свободные) номера - вот тут-то числа и пригодятся.Gustav
Технически - очень просто. Надо в последнем условии формулы из сообщения №5 знак "меньше" заменить на "меньше или равно": [vba]
Код
D$4<=INDIRECT("Гости!$E$2:$E$36")
[/vba] Концептуально же - не знаю, насколько правильно так делать. Сейчас закрашенные ячейки символизируют кол-во ночей (суток) проживания, а когда закрасим и день выезда, то всё станет на единицу больше, а последовательные брони одного и того же номера начнут "пересекаться" днями выезда\заезда. По-моему, визуально смотреться будет существенно хуже, не говоря о том, что нужно будет всегда держать в мыслях эту лишнюю "единицу" дней проживания.
Впрочем, хозяин - барин. "Запретить" я Вам, конечно, не могу, а как технически осуществить - уже рассказал.
Технически - очень просто. Надо в последнем условии формулы из сообщения №5 знак "меньше" заменить на "меньше или равно": [vba]
Код
D$4<=INDIRECT("Гости!$E$2:$E$36")
[/vba] Концептуально же - не знаю, насколько правильно так делать. Сейчас закрашенные ячейки символизируют кол-во ночей (суток) проживания, а когда закрасим и день выезда, то всё станет на единицу больше, а последовательные брони одного и того же номера начнут "пересекаться" днями выезда\заезда. По-моему, визуально смотреться будет существенно хуже, не говоря о том, что нужно будет всегда держать в мыслях эту лишнюю "единицу" дней проживания.
Впрочем, хозяин - барин. "Запретить" я Вам, конечно, не могу, а как технически осуществить - уже рассказал.Gustav
На "сетке" с ценой деления "один день" - никак. На этой сетке надо играть по правилам, установленным tkryt26.
Но сетку можно мельчить, делая цену деления равной, скажем, половине суток. В такой сетке на каждый день будет приходиться две ячейки (два столбца), но уже сможете худо-бедно изобразить по отдельности предыдущий выезд и новый заезд в течение одних суток. Можно пойти дальше и разбить сутки на 12 двухчасовых интервалов (потребуются 12 столбцов таблицы на один день календаря) - тогда сможете отобразить и чек-ин в 14:00, и чек-аут в 12:00. Всё зависит от целей использования разрабатываемого инструмента - вашей таблицы.
На "сетке" с ценой деления "один день" - никак. На этой сетке надо играть по правилам, установленным tkryt26.
Но сетку можно мельчить, делая цену деления равной, скажем, половине суток. В такой сетке на каждый день будет приходиться две ячейки (два столбца), но уже сможете худо-бедно изобразить по отдельности предыдущий выезд и новый заезд в течение одних суток. Можно пойти дальше и разбить сутки на 12 двухчасовых интервалов (потребуются 12 столбцов таблицы на один день календаря) - тогда сможете отобразить и чек-ин в 14:00, и чек-аут в 12:00. Всё зависит от целей использования разрабатываемого инструмента - вашей таблицы.Gustav