在EXCEL / GOOGLE SHEETS中计算具有多个条件和范围的多个值

问题描述 投票:0回答:2

在我的公司中,如果发生以下情况,员工应该请假:1.他们在星期五夜班工作2.他们在周四NS和周六NS工作3.他们在星期五早上和星期六工作。我需要计算每位员工应获得多少休假]

晚上,晚上,星期一|天PLACE1 | PLACE2 | PLACE3 PLACE4 | PLACE5 | PLACE6 |达夫FL RI RI 1 10达夫RI FL DAV 2 11FL RI DAV FL 3 12达夫RI FL DAV 4 13FL RI DAV RI FL 5 14DAV 6 15FL DAV 7 16达夫FL RI RI 1 17达夫RI FL DAV 2 18FL RI DAV FL 3 19达夫RI FL DAV 4 20FL RI DAV RI 5 21FL DAV 6 22RI FL 7 23

在此示例中,FL休假2天RI休息1天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,仅使用不带脚本的内置公式,有什么方法可以实现?

excel countif
2个回答
0
投票

我已将您的样本数据转移到工作表中,因此您的早班数据在A:C列中,而夜班数据在E:G列中。关键的工作日列为H列。我假设您的数据为1 =星期日。

我创建了两个命名范围,“ AM”和“ PM”,以覆盖早班和夜班。范围从第1行开始很重要。Note:同样重要的是,不要将我的公式写在工作表中第3行的上方。

我在右侧的布局中添加了列,每位员工一列,并在每列的第二行中写下了员工的姓名。在我的工作表中,这些列位于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。

该公式将舍弃不是星期五或星期六的所有日期。如果名字出现在PM班次中,则星期五将授予“ 1”。如果在同一周的星期五上午或星期四下午也有工作,则授予星期六下午的工作和休息日。根据此规则,如果是星期六,则不能在第一天开始几个月。前一个星期四必须包含在该月的数据中。如果不是,则不会发生任何错误(除非公式在第2行中),但由于引用的行不包含有效数据,结果将是错误的。


0
投票

您可以尝试以下公式:

星期五晚上简单:

=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

© www.soinside.com 2019 - 2024. All rights reserved.