Страницы: 1
RSS
Как проверить диапазон дат с учётом выходных и праздников?
 
Есть таблица, в которой две даты. Очень много строк.
Надо проверить, что бы вторая дата была не меньше чем через 5 рабочих дней. В противном случае надо сигнализировать.
Использовал РАБДЕНЬ() и список дат-праздников. Но как перенести… не понятно. Таких дней не много, но надо учесть.
Нашёл формулы использующие массивы, но такая формула из-за использования массива по столбцу просто так не копируется. (см.файл)
Может кто посоветует что-нибудь... например использование макросов...Спасибо.

кросс
кросс2
Изменено: zorkon71 - 10.11.2019 19:38:45
 
кросс

zorkon71,  ничего не понятно. Действительно много строк, но где первая, где вторая дата ….?  Нужно ли использовать праздничные дни?
Изменено: БМВ - 09.11.2019 23:10:07
По вопросам из тем форума, личку не читаю.
 
zorkon71, размещаете тему на нескольких ресурсах - информируйте об этом прямыми ссылками.
 
Цитата
БМВ написал:
zorkon71 ,  ничего не понятно.
Первые три колонки (А, В, С) - это справочник.
G3, G4 - пояснение
Колонки I и J - это контроль заведённого справочника по производственному календарю.
Колонка L - это первая дата (малая часть того что надо проверить), M - это то, что получилось после прибавления 5 рабочих дней.
 
Я так понял, решение через массив с указанием полного календаря единственно работающее.
Вопрос у меня в использовании.
Вся проблема в копировании в столбце формулы массива:
Код
{=НАИМЕНЬШИЙ(ЕСЛИ((A1:A366<(L1+1))+(A1:A366*C1:C366=0);МАКС(A1:A366)*2;A1:A366);5)}
Можно ли формулу перенести в пользовательский макрос?
 
чтобы проверить диапазон дат с учетом выходных и праздников, учитывайте выходные и праздники при проверке
Изменено: Ігор Гончаренко - 10.11.2019 19:50:59
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Решено!
Всем спасибо!
 
формула массива:
Код
=ИНДЕКС(СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7));ПОИСКПОЗ(E2;МУМНОЖ((ТРАНСП((ДЕНЬНЕД(СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7));2)<6)-СЧЁТЕСЛИ(ПразДН;СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7)))+СЧЁТЕСЛИ(РабДН;СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7))))<>0)*(ТРАНСП(СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7)))<=СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+9)));СТРОКА(ИНДЕКС(F:F;D2):ИНДЕКС(F:F;D2+(1+ОКРУГЛВВЕРХ(E2/7;))*7))^0);))
где
D2 - ссылка на ячейку с начальной датой
E2 - ссылка на ячейку, указывающую количество рабочих дней
F:F - не принципиально, можно указать ссылку на любую колонку
РабДН - диапазон с рабочими днями (субботы, воскресенья назначенные рабочими)
ПразДН - диапазон с праздниками
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх