|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.01.2010, 04:11 | #1 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Расчёт дней отпуска
Подскажите решение.
По Трудовому кодексу отпуск предоставляется в календарных днях (не рабочих), но при этом не учитываются праздники. Не могу сообразить, как добавить к определённой дате, например, 28 дней отпуска с учётом праздников, приходящихся на отпуск и указанных в отдельном диапазоне. Желательно только формулами. То есть, отпуск с 01.05.10 — 10 дней. Человек отдыхает: 10 дней отпуска + 1 мая + 9 мая — до 12.05.10. В ячейку A1 — начальная дата, в B1 — дни отпуска, в C1 — конечная. |
03.01.2010, 07:14 | #2 |
Форумчанин
Регистрация: 05.08.2009
Сообщений: 465
|
Посмотри, может так:
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
|
03.01.2010, 13:25 | #3 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Спасибо, работает.
Правда немного громоздко, а я то пытался впихнуть в пару ячеек. Но огорчает другое - я не могу понять логику формулы. 1) СЧЁТЕСЛИ проверяет совпадение праздничных дней и календарных — если совпадений 0, берём календарный массив, в противном случае — 0. Ведь если опущено альтернативное значение ЕСЛИ (условие;значение1;???), то формула во втором случае должна выдать ЛОЖЬ или 0. 2) Внешняя ЕСЛИ проверяет дату больше (или равно) даты_начала_отпуска и передаёт в формулу полученный массив; в противном случае — 0. Вот тут меня и „клинит“. Если полученное в первом пункте значение равно 0 (СЧЁТЕСЛИ <>0), то из чего же мы выбираем? 3) НАИМЕНЬШИЙ относится к массиву отпускных дней или всему календарю? Как я понимаю, функция нужна, чтобы выдернуть первое (наименьшее) значение из массива? Как она работает в данном случае? |
03.01.2010, 13:51 | #4 |
Форумчанин
Регистрация: 05.08.2009
Сообщений: 465
|
Внутр. ЕСЛИ убирает из массива дней праздники(они в массиве превращаются в ЛОЖЬ).
Внешняя ЕСЛИ убирает дни из массива, которые меньше даты начала отпуска (также ЛОЖЬ). для НАИМЕНЬШЕГО создан массив, и коэффициентом (которым является кол-во дней отпуска-например 19) выбирается 19-й наименьший
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
|
03.01.2010, 14:54 | #5 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Спасибо за оперативный ответ.
Попробую „обосмыслить“ на ясную голову. Пока что-то не получается, хоть вы и разжевали... |
03.01.2010, 19:32 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
есть простая функция РАБДЕНЬ. в 4-ю колонку пишем даты праздников,
кстати, в росии на украине если праздник попадает на выходной - выходным становиться ближайший рабочий день, кабмин может это дело поправить в каждом конкретном случае. соответственно праздниками (выходными) я написал 3, 4 и 10 мая (1,2,9 - попадают на выходные). еще один кстати почему-то уважаемый DV68 2 мая не посчитал за государственный праздник, в моем примере учтен а вот с 1 января, конечно красиво - месяц драбадан, не помню по какому календарю... и еще один кстати, росиия и украина, кажется, к числу государстьвенных праздников относят пасху (я лично не отношу это к числу праздников, но в едином порыве, вместе со всем трудовым народом радуюсь дополнительному выходному). в 2010 году пасха будет 4 апреля, соответственно 5.04.2010 - выходной. уважаемый DV68 тоже почему-то эту дату игнорировал.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
03.01.2010, 19:49 | #7 |
Форумчанин
Регистрация: 05.08.2009
Сообщений: 465
|
Проблема в том, что сейчас у нас отпуск насчитывается по календарным дням, поэтому РАБДЕНЬ здесь не подходит. А 2 мая у нас уже не официальный праздник и пасха тоже.
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
|
03.01.2010, 20:24 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
извините, отстал от жизни не говоря уже о трудовом кодексе (особенно россии)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
04.01.2010, 00:57 | #9 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
DV68 всё правильно объяснил.
Кстати, я сначала даже хотел использовать ЧИСТРАБДНИ или РАБДЕНЬ, и добавить пару дней для каждой недели, но не додумал как это сделать. |
09.01.2010, 08:29 | #10 |
Пользователь
Регистрация: 07.01.2010
Сообщений: 13
|
Вначале долго смотрел на смутно знакомую формулу, пытаясь понять в чём подвох. Кхе.
Scolopendra, если ещё актуально, сделал "менее громоздкое решение": оставил вынесенными только праздники в первом варианте и вообще в рамках одной ячейки во втором. Лучше проверить, т к не проверял и сейчас утро. Оставил немного комментариев в файле. =НАИМЕНЬШИЙ(ЕСЛИ(0=МУМНОЖ(--(СТРОКА(ИНДЕКС(A:A;D2):ИНДЕКС(A:A;D 2+50))=ТРАНСП(L2:L12));--(L2:L12>0));СТРОКА(ИНДЕКС(A:A;D2):И НДЕКС(A:A;D2+50)));C2) <-вынесены только праздники =НАИМЕНЬШИЙ(ЕСЛИ(0=МУМНОЖ(--(СТРОКА(ИНДЕКС(A:A;D2):ИНДЕКС(A:A;D 2+50))={40179;40180;40181;40182;401 83;40185;40232;40245;40299;40307;40 341});{1:1:1:1:1:1:1:1:1:1:1});СТРО КА(ИНДЕКС(A:A;D2):ИНДЕКС(A:A;D2+50) ));C2) <-в рамках одной ячейки PS: может не работать в 2003 excel'e. Тогда нужно заменить диапазоны A:A на A1:a50000, использовать двссыл() или смещ() с высотой 50. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Векторный расчёт в excel | klok | Microsoft Office Excel | 2 | 04.08.2009 22:00 |
Расчёт времени и денег | Wirm | Microsoft Office Excel | 1 | 27.07.2009 00:31 |
Расчёт максимального значение с данными из StringGrid | Vendetta | Компоненты Delphi | 2 | 31.05.2009 13:02 |
Расчёт рейтинга ELO | sasha14486 | PHP | 0 | 14.05.2009 00:19 |