一、excel如何计算周末加班
假设上班时间在A2,下班时间在B2,加班时间在C2,则在C2里写下如下公式bai:
=IF(AND(MOD(HOUR(B2),6)=0,HOUR(B2)<>0,MOD(HOUR(B2),6)=0,HOUR(B2)<>0,HOUR(A2)=HOUR(B2)),0,HOUR(B2-A2)+ROUND(MINUTE(B2-A2)/60,2)-(AND(HOUR(A2)<12,HOUR(B2)>12,HOUR(B2)<=18)*1+AND(HOUR(A2)<12,HOUR(B2)>18)*2+AND(HOUR(A2)>=12,HOUR(A2)<18,HOUR(B2)>18)*1)-(AND(MOD(HOUR(A2),6)=0,HOUR(A2)<>0)*(1-ROUND(MINUTE(A2)/60,2))+AND(MOD(HOUR(B2),6)=0,HOUR(B2)<>0)*(ROUND(MINUTE(B2)/60,2))))
并设置单元格格式为数字,保留2位小数。
解释:
设上班或下班打卡时间在12点到13点的时间段为“无效点1”,18点到19点的时间段为“无效点2”(自己取的名字)。
如果计算上下班打卡时间均在同一个无效点的情况:
按加班时间为0计算。
公式为:AND(MOD(HOUR(B2),6)=0,HOUR(B2)<>0,MOD(HOUR(B2),6)=0,HOUR(B2)<>0,HOUR(A2)=HOUR(B2))
否则:
加班的时间为:下班时间-上班时间-无效点时间
公式为:HOUR(B2-A2)+ROUND(MINUTE(B2-A2)/60,2)-无效点时间
然后将要减去的时间分为以下几种情况:
一、计算上下班之间完全经过“无效点”的情况:
1、上班打卡时间<12点,下班打卡时间(>=13点,<19点),完全经过无效点1,减去1小时;
公式为:(AND(HOUR(A2)<12,HOUR(B2)>12,HOUR(B2)<=18)*1
2、上班打卡时间(>=12点,<18点),下班打卡时间>=19点,完全经过无效点2,减去1小时;
公式为:AND(HOUR(A2)>=12,HOUR(A2)<18,HOUR(B2)>18)*1
3、上班打卡时间<12点,下班打卡时间>19点,完全经过两个无效点,减去2小时;
公式为:AND(HOUR(A2)<12,HOUR(B2)>18)*2
此时可以发现,以上还没有计算上下班打卡时间部分经过无效点的时间,下面就补上。
二、计算上下班打卡时间部分经过无效点的情况:
1、上班打卡时间经过无效点:减去从打卡时间到该无效点末的分钟数:
公式为:AND(MOD(HOUR(A2),6)=0,HOUR(A2)<>0)*(1-ROUND(MINUTE(A2)/60,2))
2、下班打卡时间经过无效点:减去从该无效点起始到打卡时间的分钟数:
公式为:AND(MOD(HOUR(B2),6)=0,HOUR(B2)<>0)*(ROUND(MINUTE(B2)/60,2)
以上时间均将分钟数换算成小时数计算在内,保留2位小数。
三、其余情况按正常时间加减计算。
二、excel怎么获取星期六
在A列输入日期,在C列输入假期的日期,
在B2中输入或复制粘贴下列公式
=AND(WEEKDAY(A2,2)=6,COUNTIF(C:C,A2)=0)
下拉填充
B列结果为TRUE的同一行A列为符合要求的日期。
在E2中输入或复制粘贴下列公式
=INDEX(A:A,SMALL(IF((WEEKDAY(A$2:A$246,2)=6)*(COUNTIF(C:C,A$2:A$246)=0),ROW($2:$246),4^8),ROW(A1)))
按三键CTRL+SHIFT+ENTER结束公式输入
下拉填充,连续得到符合要求的日期。