Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2010, 04:11   #1
Scolopendra
Пользователь
 
Аватар для Scolopendra
 
Регистрация: 04.10.2008
Сообщений: 16
По умолчанию Расчёт дней отпуска

Подскажите решение.
По Трудовому кодексу отпуск предоставляется в календарных днях (не рабочих), но при этом не учитываются праздники. Не могу сообразить, как добавить к определённой дате, например, 28 дней отпуска с учётом праздников, приходящихся на отпуск и указанных в отдельном диапазоне. Желательно только формулами.
То есть, отпуск с 01.05.10 — 10 дней. Человек отдыхает: 10 дней отпуска + 1 мая + 9 мая — до 12.05.10. В ячейку A1 — начальная дата, в B1 — дни отпуска, в C1 — конечная.
Scolopendra вне форума Ответить с цитированием
Старый 03.01.2010, 07:14   #2
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Посмотри, может так:
Вложения
Тип файла: rar отпуск.rar (5.6 Кб, 316 просмотров)
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 03.01.2010, 13:25   #3
Scolopendra
Пользователь
 
Аватар для Scolopendra
 
Регистрация: 04.10.2008
Сообщений: 16
По умолчанию

Спасибо, работает.
Правда немного громоздко, а я то пытался впихнуть в пару ячеек. Но огорчает другое - я не могу понять логику формулы.
1) СЧЁТЕСЛИ проверяет совпадение праздничных дней и календарных — если совпадений 0, берём календарный массив, в противном случае — 0. Ведь если опущено альтернативное значение ЕСЛИ (условие;значение1;???), то формула во втором случае должна выдать ЛОЖЬ или 0.
2) Внешняя ЕСЛИ проверяет дату больше (или равно) даты_начала_отпуска и передаёт в формулу полученный массив; в противном случае — 0.
Вот тут меня и „клинит“. Если полученное в первом пункте значение равно 0 (СЧЁТЕСЛИ <>0), то из чего же мы выбираем?
3) НАИМЕНЬШИЙ относится к массиву отпускных дней или всему календарю? Как я понимаю, функция нужна, чтобы выдернуть первое (наименьшее) значение из массива? Как она работает в данном случае?
Scolopendra вне форума Ответить с цитированием
Старый 03.01.2010, 13:51   #4
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Внутр. ЕСЛИ убирает из массива дней праздники(они в массиве превращаются в ЛОЖЬ).
Внешняя ЕСЛИ убирает дни из массива, которые меньше даты начала отпуска (также ЛОЖЬ).
для НАИМЕНЬШЕГО создан массив, и коэффициентом (которым является кол-во дней отпуска-например 19) выбирается 19-й наименьший
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 03.01.2010, 14:54   #5
Scolopendra
Пользователь
 
Аватар для Scolopendra
 
Регистрация: 04.10.2008
Сообщений: 16
По умолчанию

Спасибо за оперативный ответ.
Попробую „обосмыслить“ на ясную голову. Пока что-то не получается, хоть вы и разжевали...
Scolopendra вне форума Ответить с цитированием
Старый 03.01.2010, 19:32   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

есть простая функция РАБДЕНЬ. в 4-ю колонку пишем даты праздников,
кстати, в росии на украине если праздник попадает на выходной - выходным становиться ближайший рабочий день, кабмин может это дело поправить в каждом конкретном случае. соответственно праздниками (выходными) я написал 3, 4 и 10 мая (1,2,9 - попадают на выходные).
еще один кстати почему-то уважаемый DV68 2 мая не посчитал за государственный праздник, в моем примере учтен
а вот с 1 января, конечно красиво - месяц драбадан, не помню по какому календарю...
и еще один кстати, росиия и украина, кажется, к числу государстьвенных праздников относят пасху (я лично не отношу это к числу праздников, но в едином порыве, вместе со всем трудовым народом радуюсь дополнительному выходному). в 2010 году пасха будет 4 апреля, соответственно 5.04.2010 - выходной. уважаемый DV68 тоже почему-то эту дату игнорировал.
Вложения
Тип файла: rar Книга242.rar (3.4 Кб, 146 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.01.2010, 19:49   #7
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Scolopendra Посмотреть сообщение
...По Трудовому кодексу отпуск предоставляется в календарных днях (не рабочих), но при этом не учитываются праздники. ...
Проблема в том, что сейчас у нас отпуск насчитывается по календарным дням, поэтому РАБДЕНЬ здесь не подходит. А 2 мая у нас уже не официальный праздник и пасха тоже.
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 03.01.2010, 20:24   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извините, отстал от жизни не говоря уже о трудовом кодексе (особенно россии)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.01.2010, 00:57   #9
Scolopendra
Пользователь
 
Аватар для Scolopendra
 
Регистрация: 04.10.2008
Сообщений: 16
По умолчанию

DV68 всё правильно объяснил.
Кстати, я сначала даже хотел использовать ЧИСТРАБДНИ или РАБДЕНЬ, и добавить пару дней для каждой недели, но не додумал как это сделать.
Scolopendra вне форума Ответить с цитированием
Старый 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.
Вложения
Тип файла: rar отпуск.rar (7.4 Кб, 204 просмотров)
Александр Д вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Векторный расчёт в 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