如何用公式=IF(MOD(D2,7)<2,"周末","工作日")判断工作日及休息日,原理是什么
浅谈出口账务和excel函数 这个公式的核心原理是:用日期除以7的余数,来判断这天是星期几。
=IF(MOD(D2,7)<2,"周末","工作日")
MOD 是取余数。Excel 里日期本质是序列号(1900年1月1日=1,每过一天+1)。
所以日期序列号除以7的余数,和星期几有固定对应关系:
等等,这里有问题——余数0是星期日,余数1是星期一,并不是周末。
如果按 Excel 默认序列号,MOD(D2,7)<2 判断出来的是星期日和星期一,不是周六周日。
· 或者公式本意是判断“周日和周一”为休息(某些排班场景)
=IF(WEEKDAY(D2,2)>5,"周末","工作日")
=IF(WEEKDAY(D2,2)<6,"工作日","周末")
=IF(OR(MOD(D2,7)=0,MOD(D2,7)=6),"周末","工作日")
=IF(MOD(D2,7)<2,"周末","工作日")
这个写法要成立,除非你的 D 列日期做了 +1 或 -1 的偏移,让余数0和1正好对应周六周日。
MOD(D2,7) 是利用“日期序列号÷7的余数”反推星期几,原理没错;但 <2 在标准 Excel 里对应的是周日和周一,不是周六周日。判断周末更稳妥的写法是 WEEKDAY(D2,2)>5。