Формула в таблице, которая рассчитывает начисленный отпуск на основе существующих смежных значений (или отсутствия) - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над таблицей для управления посещаемостью сотрудников, отпуском и начисленным отпуском (см. Скриншот ниже).Я расширяю это из шаблона, который я нашел в Интернете.

Attendance, leave and holiday management

См. Активную ячейку NL8, здесь я хочу придумать формулу, которая составляетначисленные выходные дни, основанные на тех днях, когда сотрудник проработал.

То, что в настоящее время существует, в основном совпадает с «Днем отпуска (месяц)» и подсчитывает любые значения (дни отпуска), которые есть в отношении этого сотрудника.

Поскольку в этой электронной таблице задан весь год, остальные формулы выглядят так:

=ArrayFormula(SUMPRODUCT((OFFSET($A7,0,31*($A$3-1)+1,1,31)<>"")*(IF(OFFSET($A7,0,31*($A$3-1)+1,1,31)=$NZ$15,0.5,IF(OFFSET($A7,0,31*($A$3-1)+1,1,31)=$NZ$16,0.5,1))*(OFFSET($A$4,0,31*($A$3-1)+1,1,31)))))

(просто чтобы дать вам пример того, как они компенсируются для каждого месяца)

Отпуск начисляется из расчета 2,33 дня за календарный месяц.Мне нужно суммировать это в столбце «Начислено за праздничные дни», но в идеале не нужно отмечать каждый посещенный день в ячейке для каждого сотрудника.Есть ли способ, которым это можно сделать, вычисляя, например, только 2,33 в месяц с даты начала до текущей даты?

Редактировать

Если это поможет, здесь только для чтениякопию моего листа , копию которого вы можете сделать.

1 Ответ

1 голос
/ 19 июня 2019

сначала вам нужно будет установить / получить начальную точку для каждого сотрудника.скажем, сотрудник 1 начинается с 2/4/2019 (ячейка A15):

=ARRAYFORMULA(COUNTA(UNIQUE(TEXT(TO_DATE(ROW(INDIRECT(
 "A"&DATEVALUE(A15)&":A"&DATEVALUE(TODAY())))), "MM-yyyy")))-1)*2.33-
 (DAYS(A15, DATE(YEAR(A15), MONTH(A15), 1))/DAY(EOMONTH(A15, 0))*100%)*2.33+
 (DAYS(TODAY(), DATE(YEAR(TODAY()), MONTH(TODAY()), 1))/(DAY(EOMONTH(TODAY(), 0))-1)*100%)*2.33

формула состоит из 3 частей ... перваячасть подсчитывает дни, затем она преобразует их в месяцы, подсчитывает уникальные месяцы и умножает их на 2,33 в соответствии с запросом

=ARRAYFORMULA(COUNTA(UNIQUE(TEXT(TO_DATE(ROW(INDIRECT(
 "A"&DATEVALUE(A15)&":A"&DATEVALUE(TODAY())))), "MM-yyyy")))-1)*2.33

вторая часть представляет исправление для случая, когда работник не начинает работу с первого днямесяц

=(DAYS(A15, DATE(YEAR(A15), MONTH(A15), 1))/DAY(EOMONTH(A15, 0))*100%)*2.33

и третья часть компенсирует дни с сегодняшней даты до конца этого месяца

=(DAYS(TODAY(), DATE(YEAR(TODAY()), MONTH(TODAY()), 1))/(DAY(EOMONTH(TODAY(), 0))-1)*100%)*2.33

0

...