Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Подсчет дат при множественных условиях, Формулой или функцией получить дату при многих условиях
 
Как получить дату переходящую на другой день
Есть дата и дни плюс, надо получить дату на основе нескольких условий
если суммируемая дата выпала не на праздник и выходной +1 день
если пятница вышла не на праздник будет понедельник
если суббота и воскресенье то вторник
есть таблица с праздниками постоянно обновляемая
получилось две формулы но свести не получается слишком длинная вышла
=ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2);ЕСЛИ(СЧЁТ ЕСЛИ(D:D;B2+A2+1);ЕСЛИ(СЧЁТЕСЛИ(D:D ;B2+A2+2);ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2+3 );ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2+4);ЕСЛИ(С ЧЁТЕСЛИ(D:D;B2+A2+5);ЕСЛИ(СЧЁТЕСЛИ( D:D;B2+A2+6);B2+A2+8;B2+A2+7);B2+A2 +6);B2+A2+5);B2+A2+4);B2+A2+3);B2+A 2+2);ЕСЛИ(ИЛИ(ДЕНЬНЕД(B2+A2;2)=5;ДЕ НЬНЕД(B2+A2;2)=6);B2+A2+3;ЕСЛИ(ДЕНЬ НЕД(B2+A2;2)=7;B2+A2+2;B2+A2+1)))
и
затем =ЕСЛИ(ДЕНЬНЕД(F2;2)=6;F2+2;ЕСЛИ(ДЕН ЬНЕД(F2;2)=7;F2+2;F2))

как создать функцию UDF или сократить формулу из двух сделать одну или хотя бы одну функцию для большой формулы
Изменено: Goldenito - 18 Мар 2018 04:49:43
 
Здравствуйте. Посмотрел файл. Такое себе полноценное ТЗ.
Смотрите в сторону РАБДЕНЬ() и иже с ним
Согласие есть продукт при полном непротивлении сторон.
 
Sanja,РабДень пропускает дни выходных, а нам здесь их надо считать
 
Goldenito, ЧИСТРАБДНИ(), ну и нужен доп.дипазон со всеми праздничными датами. Это если нужно считать именно рабочие дни. А так даты - это числа с точки зрения Excel, особенно в VBA. Каждая единица - один день. Числа или хвосты с плавающей точкой  - время.
Изменено: Anchoret - 13 Мар 2018 01:38:58
 
Anchoret, получается на последние дни идет расчет РАБДЕНЬ.МЕЖД еще как то, считает но у меня там не получилось довести до логического конца

=РАБДЕНЬ.МЕЖД(I20;K20;1;G14:G26)
Изменено: Goldenito - 13 Мар 2018 19:52:02
 
считать нужно все дни, а потом уже в конечной дате делать манипуляции исходить из дня праздник, три рабочие субботы,
воскресенье получается всегда считать вторник, при субботе всегда вторник, кроме трех рабочих - будет всегда понедельник  
 
как сократить и соединить в одно эти две формулы? или создать функцию или сократить хотя бы одну большую формулу

=ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2);ЕСЛИ(СЧЁТ ЕСЛИ(D:D;B2+A2+1);ЕСЛИ(СЧЁТЕСЛИ(D:D ;B2+A2+2);ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2+3 );ЕСЛИ(СЧЁТЕСЛИ(D:D;B2+A2+4);ЕСЛИ(С ЧЁТЕСЛИ(D:D;B2+A2+5);ЕСЛИ(СЧЁТЕСЛИ( D:D;B2+A2+6);B2+A2+8;B2+A2+7);B2+A2 +6);B2+A2+5);B2+A2+4);B2+A2+3);B2+A 2+2);ЕСЛИ(ИЛИ(ДЕНЬНЕД(B2+A2;2)=5;ДЕ НЬНЕД(B2+A2;2)=6);B2+A2+3;ЕСЛИ(ДЕНЬ НЕД(B2+A2;2)=7;B2+A2+2;B2+A2+1)))
и
затем =ЕСЛИ(ДЕНЬНЕД(F2;2)=6;F2+2;ЕСЛИ(ДЕН ЬНЕД(F2;2)=7;F2+2;F2))
 
Goldenito,
Код
=B2+A2+IF(COUNTIF(D:D;B2+A2);IFERROR(1+MATCH(0;COUNTIF(D:D;B2+A2+{1;2;3;4;5;6});0);8);IF(OR(WEEKDAY(B2+A2;2)=5;WEEKDAY(B2+A2;2)=6);3;IF(WEEKDAY(B2+A2;2)=7;2;1)))+(WEEKDAY(B2+A2+IF(COUNTIF(D:D;B2+A2);IFERROR(1+MATCH(0;COUNTIF(D:D;B2+A2+{1;2;3;4;5;6});0);8);IF(OR(WEEKDAY(B2+A2;2)=5;WEEKDAY(B2+A2;2)=6);3;IF(WEEKDAY(B2+A2;2)=7;2;1)));2)>=6)*2
Этапы "упрощения" в файле
Изменено: БМВ - 18 Мар 2018 09:14:04
 
Доброе время суток
Коллеги, а можно для бестолкового объяснить, что считается? Насколько хватило разума - нужно найти от заданной рабочей даты рабочую дату через заданное количество дней, учитывая только рабочие дни. Слепил вариант. Но, не могу понять, почему для 27.02.2018 через 10 дней должно быть 12.03.2018, а не 15.03.2018, как получилось у меня?
Сделал тупо - составив календарь только рабочих дней.

Всё, понял в чём извращение. Интересно в какой это конторе какой страны так придумано?
Изменено: Андрей VG - 18 Мар 2018 09:58:12
 
Если правильно понял логику... Желтые ячейки не участвуют в расчете, просто для информации видеть
 
StepanWolkoff, да просто смотреть где и как меняется

Цитата
Андрей VG написал: в какой это конторе какой страны так придумано?
такое у нас в суде )

Цитата
БМВ написал: Этапы "упрощения" в файле
спасибо отлично получилось

Всем спасибо огромное (желтые это праздники, там я отсебятину вписал, чтобы видеть в какую сторону играть, формулах) Благодарю
Изменено: Goldenito - 18 Мар 2018 15:22:37
 
БМВ, только заметил что моя формула следующий праздник не проверила в списке, прикрепил файл где это отметил
12 марта и 14 марта
Изменено: Goldenito - 18 Мар 2018 16:10:37
 
Goldenito, Я логику не смотрел , просто немного "упростил" формулу. В самом алгоритме ошибка ибо получается, что надо перепроверять все после изменений. Получается что подбором проще решить.прибавляя по 1 и проверяя на список праздников и выходные.
 
БМВ, вот я уже пару дней никак не придумаю)
 
Я лично не понимаю и не очень хочу понимать логигу, Еслиб был более понятный пример , как должно быть, то ....

Попробуйте поиграть с формулой из O
=B2+A2+MATCH(0;COUNTIF(D:D;B2+A2+ROW($A$1:$A$30)-1)+(WEEKDAY(B2+A2+ROW($A$1:$A$30)-1;2)>6);0)-1
Тут не сделан +3 если пятница, ибо я не понимаю что делать если пятница стала в результате сдвига из-за выходных.

И проверьте вариант в Q
=B2+A2+3*(WEEKDAY(B2+A2;2)=5)*(COUNTIF(D:D;B2+A2))+MATCH(0;COUNTIF(D:D;B2+A2+3*(WEEKDAY(B2+A2;2)=5)*(COUNTIF(D:D;B2+A2))+ROW($A$1:$A$30)-1)+(WEEKDAY(B2+A2+3*(WEEKDAY(B2+A2;2)=5)*(COUNTIF(D:D;B2+A2))+ROW($A$1:$A$30)-1;2)>6);0)-1

A$30 можно навперно на 15 поменять. Скорее всего в этом промежутке найдется нужный день
Изменено: БМВ - 18 Мар 2018 18:14:16
 
БМВ, минуту проверяю
 
Не спешите, я до пятницы совершенно свободен, а в пятницу вечером ....  Андрей VG, ;-)
 
БМВ, похоже у меня получилось, только формулы ужасные)
Страницы: 1
Читают тему (гостей: 1)
Наверх