| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Работа с MS Office > Проблема с подсчетом рабочих дней |
| Автор: Xano4ka 25.8.2006, 23:14 |
| Прошу уважаемых модераторов, если написала тему кудато не туда не наказывать сильно, т.к. мучаюсь с решением проблемы и только и надеюсь на чужие светлые головы тутошних обитателей. Проблема с написанием формулы в эксель: Есть два столбца с датами, в одном начало периода, в другом конец,в третьем надо вычеслить кол-во рабочих дней.Знаю что есть формула ЧИСТАРАБДни,но проблема в том, что праздники(которые каждый год у нас в стране в разное время приходиться вводить в ручную),т.е. она их не учитывает. Допустим интервалы с 01.03.2006 по 31.03.2006, используя функцию ЧИСТАРАБДНИ поучаем значение - 23Но программа не учитывает 8 марта, т.е. это не выходной а праздник.Этот день мне придется вносить вручную. Периоды у меня все разные и их много, поэтому смотреть по каждому входят ли в этот интервал какие то праздники не представляется возможным.Предполагаю что каким-то образом можно использовать функцию ЕСЛИ.Допустим напиать все даты праздников (благо их не так много), и потом сравнивать каждую из этих дат с определенным интервалом, т.е. если дата входит в это интервал то писать единицу, если не входит то ноль, и так по всем этим датам в одном периоде. Но как заставить функцию "если" сравнивать?? |
| Автор: Albinos_x 26.8.2006, 11:26 |
| Вам сюда: http://forum.vingrad.ru/index.php?showforum=131 |
| Автор: ИгнатьевАлексей 27.8.2006, 19:51 | ||
=ЕСЛИ((E3>=B3)*(E3<=B4);1;0) B3,B4 - ячейки с датами начала и конца временного интервала, Е3 - ячейка с датой праздника. Думаю понятно, что в ячейке с данной формулой будет "1" в случае, когда дата Е3 находится внутри интервала В3-В4 включительно. В противном случае - "0". Протестируй только все хорошенько, а то я не так много с датами в Екселе работал. На вскидку, вроде бы работает. Я вот только думаю, что очень неудобно работать будет тебе. Ведь на каждый временной интервал надо будет рядышком поставить массив с датами праздников нужного тебе года, следующая колонка этого массива - вышеуказанная конструкция "ЕСЛИ", суммируем эту колонку и получаем необходимый результат. В той версии Екселя, что у меня установлен, функции ЧИСТРАБДНИ нет, поэтому не попробывать мне самому, но справка гласит: Синтаксис ЧИСТРАБДНИ(нач_дата ;кон_дата ;праздники) Праздники — необязательный список из одной или нескольких дат, которые требуется исключить из рабочего календаря, например государственные праздники. Список может представлять собой диапазон ячеек, содержащих даты, или массив констант (Массив. Объект, используемый для получения нескольких значений в результате вычисления одной формулы или для работы с набором аргументов, расположенных в различных ячейках и сгруппированных по строкам или столбцам. Диапазон массива использует общую формулу; константа массива представляет собой группу констант, используемых в качестве аргументов.) или числовые форматы, представляющие даты. Ты пробовала так? Не работает что-ли? |
| Автор: Izuver 28.8.2006, 20:54 |
| А сделать еще один столбец с количеством праздников, чтоб они отнимались от суммы. Или написать функцию такого расчета с уже заданными датами праздников. |
| Автор: ИгнатьевАлексей 28.8.2006, 21:24 | ||
Так ведь ЧИСТРАБДНИ(нач_дата ;кон_дата ;праздники) учитывает эту проблему!
Если я правильно понял, то девушка - не программист и пытается совершенно справедливо решить проблему миллионов бухгалтеров мира стандартными Екселевскими методами. Кстати, в данном случае, на мой взгляд в функцию зашивать даты праздников неудобно. Ведь у нас часто меняются они, причем незадолго до самих праздников, поэтому, бухгалтеру удобнее самому вводить их в отдельные ячейки. Это проще, чем перепрограммировать функцию. |
| Автор: Xano4ka 30.8.2006, 22:37 |
| Спасибо всем огромное... Рещила проблемы именно таким образом, который предложил Шустрый... Почти... Если(если(C>=A);1;0)+(если(С<=B);1;0)=2;1;0)т.к. не могла добиться чтобы функция учитывала сразу 2 условия (и больше и меньше). Оказывается этого можно добиться перемножением (*). Огромное приогромное спасибо))))) Сама от себя не ожидала, что смогу))) Немного трудоемко, т.к. преходится прогонять все праздники через интервал, благо в нашем государстве всего 12 государственных праздников, и в том случае если они попадают на выходные, правительство справедливо переносит их на будний день. Таким образом в год количество праздников не меняется. Правда формулы очень громоздкие, но другого способа не вижу. Программы писать не умею((( "Чистарабдни" требует ручного ввода количества праздников (а именно этого я и пытаюсь избежать), т.к. не в состоянии их отслеживать в сотнях интервалов. |
| Автор: ИгнатьевАлексей 31.8.2006, 18:37 | ||
Милая! А ты сама себя не путаешь |