大数跨境

如何用公式=IF(MOD(D2,7)<2,"周末","工作日")判断工作日及休息日,原理是什么

如何用公式=IF(MOD(D2,7)<2,"周末","工作日")判断工作日及休息日,原理是什么 浅谈出口账务和excel函数
2026-09-16
6
这个公式的核心原理是:用日期除以7的余数,来判断这天是星期几。

---

公式拆解

```excel
=IF(MOD(D2,7)<2,"周末","工作日")
```

第一步:MOD(D2,7)

MOD 是取余数。Excel 里日期本质是序列号(1900年1月1日=1,每过一天+1)。

关键在于:1900年1月1日是星期一,序列号1。

所以日期序列号除以7的余数,和星期几有固定对应关系:

余数 星期
1 星期一
2 星期二
3 星期三
4 星期四
5 星期五
6 星期六
0 星期日

第二步:MOD(D2,7)<2

余数小于2,只有两种情况:

· 余数 = 1 → 星期一
· 余数 = 0 → 星期日

等等,这里有问题——余数0是星期日,余数1是星期一,并不是周末。

---

这个公式其实有坑

如果按 Excel 默认序列号,MOD(D2,7)<2 判断出来的是星期日和星期一,不是周六周日。

所以这个公式只有在特定前提下才成立,比如:

· 你的日期列 D 经过了偏移处理
· 或者你用的不是标准日期序列号
· 或者公式本意是判断“周日和周一”为休息(某些排班场景)

---

更可靠的写法

判断周六周日,推荐用 WEEKDAY:

```excel
=IF(WEEKDAY(D2,2)>5,"周末","工作日")
```

WEEKDAY(D2,2) 的第二种参数下:

· 星期一 = 1
· 星期二 = 2
· …
· 星期六 = 6
· 星期日 = 7

所以 >5 就是周六、周日。

或者:

```excel
=IF(WEEKDAY(D2,2)<6,"工作日","周末")
```

---

如果非要用 MOD

标准日期序列号下,判断周六周日应该用:

```excel
=IF(OR(MOD(D2,7)=0,MOD(D2,7)=6),"周末","工作日")
```

或者更简洁:

```excel
=IF(MOD(D2,7)<2,"周末","工作日")
```

这个写法要成立,除非你的 D 列日期做了 +1 或 -1 的偏移,让余数0和1正好对应周六周日。

---

一句话总结

MOD(D2,7) 是利用“日期序列号÷7的余数”反推星期几,原理没错;但 <2 在标准 Excel 里对应的是周日和周一,不是周六周日。判断周末更稳妥的写法是 WEEKDAY(D2,2)>5。

【声明】内容源于网络
0
0
浅谈出口账务和excel函数
1234
内容 1438
粉丝 0
浅谈出口账务和excel函数 1234
总阅读23.1k
粉丝0
内容1.4k