|
|
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
Есть график отпусков (создан в Excel 2003). В нем учтены: дата начала отпуска; продолжительность. В файле есть лист с перечнем дат праздничных дней, на которые соотвественно продлевается отпуск, если они попадают в период отпуска. Как автоматически подсчитать количество праздников приходящихся на период отпуска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:50:09 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
И еще не забыть проверку: добавили дни - и опять проверили, не попали ли праздники на добавленные дни. И так until праздников нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:52:30 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
А проверка простая: datediff от даты начала и даты праздника сравнивается с продолжительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:53:59 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
И плюс учесть вариант, когда отпуск перелезает на следующий год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:54:35 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
Ух ты :) Ну ВС и замутил Я бы для простоты понимания сделал функцию примерно такую: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:52:53 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
Задача решается составлением функции, при этом не единственным образом Вот вариант решения с использованием 4 встроенных функций, из которых составим одну комбинированную. Это функции ПОИСКПОЗ (MATCH), и СЧЕТ (COUNT), ЕНД (ISNA), и ЕСЛИ (IF) Пусть даты начала отпусков расположены в столбце A, в строках с 4 по 7, введенные в виде чисел в формате даты. Длительность отпуска в днях в столбце B в виде целых чисел Временно введем в клетке C формулу C4=B4+A4 и протянем ее вниз для заполнения диапазона плановых дат завершения отпуска. (Впоследствии от нее можно будет отказаться, напрямую подставив соответствующее выражение в составляемую формулу). Пусть перечень выходных введен в строке 2 в столбцах I:P в виде дат. Значения расположены по возрастанию слева направо. Дополним справа текстовым значением «Z» и присвоим получившемуся диапазону с выходными имя «Выходные» Составление формулы состоит из следующих шагов. Будем искать наибольшее значение в диапазоне Выходные, которое меньше либо равно, чем дата начала отпуска и возвращать номер соответствующего столбца в диапазоне Выходные. Если такого значения не найдется, будем возвращать 1 в качестве номера столбца. Для этого в клетке D4 вводим формулу =ЕСЛИ(ЕНД(ПОИСКПОЗ(A4;Выходные;1));1;ПОИСКПОЗ(A4;Выходные;1)) и распространяем эту формулу вниз до конца списка работников. Аналогичную по смыслу формулу вводим в столбец E4, здесь будет возвращаться номер столбца, соответствующей дате. Отличие состоит в том, что если мы попадаем на последний столбец, то надо добавить 1 к результату. Таким образом формула в столбце E4 примет вид =ЕСЛИ(ЕНД(ПОИСКПОЗ(C4;Выходные;1));0;ЕСЛИ(СЧЁТ(Выходные)=ПОИСКПОЗ(C4;Выходные;1);ПОИСКПОЗ(C4;Выходные;1)+1;ПОИСКПОЗ(C4;Выходные;1))) В следующем столбце F4 запишем =E4-D4 Это собственно и есть результат. Теперь осталось развернуть его в окончательную формулу, подставив вместо E4 b D4 формулы соответствующих клеток и на последнем шаге подставить выражение для вычисления планового дня завершения отпуска без учета праздников. Результирующий вид формулы в столбце F4 будет таким: =ЕСЛИ(ЕНД(ПОИСКПОЗ(A4+B4;Выходные;1));0;ЕСЛИ(СЧЁТ(Выходные)=ПОИСКПОЗ(A4+B4;Выходные;1);ПОИСКПОЗ(A4+B4;Выходные;1)+1;ПОИСКПОЗ(A4+B4;Выходные;1)))-ЕСЛИ(ЕНД(ПОИСКПОЗ(A4;Выходные;1));0;ПОИСКПОЗ(A4;Выходные;1)) Теперь можно вычистить все промежуточные формулы в столбцах C, D, E И аккуратно перенести получившуюся формулу в столбец C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:38:51 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
про "дополним" - поторопился. ничего дополнять не надо. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:39:56 |
|
||
|
Количество праздничных дней
|
|||
|---|---|---|---|
|
#18+
формулка-то не работает. Наверно умнее ее составить заново с нуля. Пока же подправил по месту. Как будто это больше на правду похоже. вот результат Код: plaintext 1. 2. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 02:31:21 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1503&tid=1669543]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 321ms |

| 0 / 0 |
