Прошу помочь с оптимизацией поиска даты в формате МЕСЯЦ()&ГОД() в диапазоне с датами. 0. Задача: если в массиве (B1:B34) есть хоть одна дата за февраль 2017, то если указать дату в ячейке A2: 02/%ЛЮБОЙ_ДЕНЬ%/2017, то формула выведет "Да", хоть и конкретно такой даты в массиве нет. 1. Очевидный способ - достроить вспомогательный столбец (C2:C35), который будет преобразовывать дату (A2) из диапазона (B1:B34) в нужный формат (например, МЕСЯЦ()&ГОД()) 2. Формат такой выбрал, поскольку он самый простой, пробовал использовать: ДАТА(ГОД(),МЕСЯЦ(),1), но МЕСЯЦ()&ГОД() выглядит проще, т.е. привязки к формату нет. 3. Ну и сама формула поиска/подсчета:
4. Пробовал сразу обращаться к массиву B1:B34, с помощью: МЕСЯЦ(B1:B34)&ГОД(B1:B34), но либо формула берет только первое значение из массива дат, либо возвращает ошибку.
Вопрос: есть возможность избежать создания вспомогательного столбца C? Файл прикрепил.
P.S. Даты могут быть не упорядочены. Пустых ячеек не будет. Excel 2016.
формула массива =ЕСЛИ(СЧЁТ(1/(ТЕКСТ(A2;"ММГГГ")=ТЕКСТ(B2:B35;"ММГГГ")))>0;"Да";"Нет") с обычным вводом =ЕСЛИ(СУММПРОИЗВ(Ч(ТЕКСТ(A2;"ММГГГ")=ТЕКСТ(B2:B35;"ММГГГ")))>0;"Да";"Нет") или =ТЕКСТ(СУММПРОИЗВ(Ч(ТЕКСТ(A2;"ММГГГ")=ТЕКСТ(B2:B35;"ММГГГ")));"\Да;;Нет")
АlехМ, ошибся то что назвал так столбец A. В ячейке A2 будет дата не в формате МЕСЯЦ()&ГОД(), там может быть любая дата в привычном формате: 3/26/2018 (у меня англ. вариант дат). Т.е. преобразований даты в текст не требуется.
Попробовал Ваши обе формулы, к сожалению на дату с апрелем 2017, формула также ответила "Да", при этом в диапазоне апрельской даты нет. На этапе вычисления Вашей формулы заметил, что она обрабатывает не даты, а "ММГГГГ" и на любое значение выведет: Да. А третья формула вывела: "Да, Нет".
АlехМ, Например, изменил значение ячейки A2 на 1/28/2017 (28 Января 2017), итого: формулы по прежнему выводят ответ: "Да". При этом в диапазоне B2:B35 нет дат за январь 2017.
andrewmr, У меня все 4 формулы от АlехМ из вашего примера - рабочие. Думаю, тут что-то связано с настройкой языковой локализации. Моя формула к форматам дат не обращается, поэтому в данной ситуации наверное оказалась более универсальной.
Akropochev, по условию задачи для даты 28.03.2017 формула должна выдавать результат "Да". Ваша формула пишет "нет". Потому что она проверяет наличие самого элемента в массиве, а нужно проверять наличие скажем так, компонентов элемента в компонентах массива.
на 29/02/2017 - выдает эпическую ошибку )))) вот вариант формулы тоже самое что и у PooHkrd, только по другому )) =ЕСЛИ(СЧЁТЕСЛИМН( $B$2:$B$35; ">="&ДАТА(ГОД($A$2);МЕСЯЦ($A$2);1); $B$2:$B$35; "<"&ДАТА(ГОД($A$2);МЕСЯЦ($A$2)+1;1)) >0; "Да"; "Нет")