Подсчет нескольких значений с несколькими условиями и диапазонами в EXCEL / GOOGLE SHEETS - PullRequest
0 голосов
/ 30 января 2020

В моей компании работники должны получить выходной, если:
1. они работают в ночную смену в пятницу (NS)
2. они работают в четверг NS и в субботу NS
3. они работают утро пятницы и суббота NS.

Мне нужно посчитать, сколько выходных должен получить каждый сотрудник


MORNING                                  NIGHT                   WEEKDAY |DAY<br>
PLACE1|PLACE2|PLACE3                    PLACE4|PLACE5|PLACE6|   <br>
  DAV   FL      RI                               RI                 1      10<BR>
  DAV   RI      FL                        DAV                       2      11<BR>
  FL    RI      DAV                              FL                 3      12<BR>
  DAV   RI      FL                        DAV                       4      13<BR>
  FL    RI      DAV                       <b>RI</b>             <b>FL</b>         5      14<BR>
        <b>DAV</b>                                                         6      15<BR>
                                                 <b>FL</b>     <b>DAV</b>         7      16<BR>
  DAV   FL      RI                               RI                 1      17<BR>
  DAV   RI      FL                        DAV                       2      18<BR>
  FL    RI      DAV                              FL                 3      19<BR>
  DAV   RI      FL                        DAV                       4      20<BR>
  FL    RI      DAV                              <b> RI </b>               5      21<BR>
       <b> FL</b>                                               <b>DAV</b>        6      22<BR>
                                        <b>  RI</b>     <b> FL </b>               7      23<BR>

В этом примере FL получает 2 выходных
RI получает 1 день off
DAV получает 2 выходных

С помощью COUNTIFS можно подсчитать количество ночных смен пятницы.

=COUNTIFS(D3:D34,"DAV",G3:G34,"6")+COUNTIFS(E3:E34,"DAV",G3:G34,"6")+COUNTIFS(F3:F34,"DAV",G3:G34,"6")

, но все усложняется, когда мне приходится использовать условие имени в 6 разных столбцах, каждый с разным условием дня недели, т. е. сотрудник на T + SAT или F + SAT. Есть ли способ достичь этого, используя только встроенные формулы без сценариев?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Вы можете попробовать следующие формулы:

Вечер пятницы просто:

=SUMPRODUCT((L2=$D$3:$F$16)*(6=$G$3:$G$16))

Вечер четверга + субботний вечер сложнее:

=MIN(SUMPRODUCT((L2=$D$3:$F$16)*(5=$G$3:$G$16)),SUMPRODUCT((L2=$D$3:$F$16)*(7=$G$3:$G$16)))

Принцип расчета является то, что отработанные ночи четверга учитываются отдельно, а ночи субботы - отдельно, а затем из двух чисел выбираются наименьшие Это, в свою очередь, означает, что человек может работать одну неделю в четверг и две недели в субботу и получать выходной. Посмотрите, правильно ли это.

Утро пятницы + субботние вечера по аналогии:

=MIN(SUMPRODUCT((L2=$A$3:$C$16)*(6=$G$3:$G$16)),SUMPRODUCT((L2=$D$3:$F$16)*(7=$G$3:$G$16)))

enter image description here

0 голосов
/ 30 января 2020

Я перенес ваши данные образца на лист, чтобы данные утренней смены были в столбцах A: C, а ночные смены в столбцах E: G. Критическим столбцом дня недели является столбец H. Я предположил, что ваши данные имеют 1 = воскресенье.

Я создал два именованных диапазона, «AM» и «PM», чтобы покрыть столбцы для утренних и ночных смен. Важно, чтобы диапазоны начинались со строки 1. Примечание . Также крайне важно, чтобы моя формула не записывалась в строке выше строки 3 на рабочем листе.

Я добавил столбцы в ваш макет справа, по одному для каждого сотрудника, и записать имя сотрудника в строке 2 каждого столбца. В моем листе эти столбцы в K: M, а формула идет к K3. Оттуда он копируется во все остальные ячейки в моих трех столбцах.

=IF($H3=6,IF(COUNTIF(INDEX(PM,ROW(),0),K$2),1,""),IF($H3=7,IF(COUNTIF(INDEX(PM,ROW(),0),K$2),IF(OR(COUNTIF(INDEX(AM,ROW()-1,0),K$2),COUNTIF(INDEX(PM,ROW()-2,0),K$2)),1,""),""),""))

В трех добавленных мной столбцах показано 1 для каждого заработанного выходного дня.

Формула отбрасывает все дни, которые не пятница или суббота. По пятницам присуждается «1», если имя появляется в смене PM. Для субботнего вечера работа и выходной день присуждаются, если в ту же неделю работали либо в пятницу, либо в четверг. Из этого правила следует, что вы не можете начать свои месяцы в первый день, если это суббота. Предыдущий четверг должен быть включен в данные за месяц. Если это не так, ошибка не возникнет (если формула не находится в строке 2), но результат будет неправильным из-за указанной строки, не содержащей действительных данных.

...