用条件格式做到期提醒
合同到期、证件年检、任务截止、会员续费——这类"到点要办"的事,靠人盯表格一定会漏。条件格式能做到提前变黄、到期变红,一眼就知道该处理谁。
一、日历天提醒:最简单的版本
D 列是截止日期,需要 7 天内提醒。
选数据区域(含整行则按整行选),新建规则 → 使用公式:
=AND($D2<>"",$D2-TODAY()<=7,$D2-TODAY()>=0)
解释:
$D2<>""排除空白行,否则空单元格被当 0,永远满足"已过期";$D2-TODAY()<=7是 7 天内;$D2-TODAY()>=0是还没过期。
分三档更实用,建三条规则,颜色从浅到深:
| 规则 | 公式 | 颜色 |
|---|---|---|
| 已过期 | =AND($D2<>"",$D2<TODAY()) | 红底白字 |
| 7 天内 | =AND($D2<>"",$D2-TODAY()<=7) | 橙底 |
| 30 天内 | =AND($D2<>"",$D2-TODAY()<=30) | 黄底 |
顺序上把"已过期"放最上面并勾"停止如果为真",否则一个过期项会同时命中三条。
二、按工作日算,而不是自然日
7 个自然日里可能有周末,实际只剩 5 个工作日。用 NETWORKDAYS 更贴近业务:
=AND($D2<>"",NETWORKDAYS(TODAY(),$D2)<=5)
NETWORKDAYS 起点是今天、终点是截止日,返回两者之间的工作日数(含首尾)。把节假日区域作为第三参数传进去,能把法定假日排掉:
=AND($D2<>"",NETWORKDAYS(TODAY(),$D2,节假日!$A$2:$A$50)<=5)
三、按剩余百分比提醒
有些事项不适合按天算,比如"合同剩余期限不足 20%"。这时需要开始日期和结束日期两列:
=AND($C2<>"",($C2-TODAY())/($C2-$B2)<=0.2)
B 列开始、C 列结束,剩余比例 ≤ 20% 时提醒。这个规则对长短周期都适用,比固定天数公平。
四、只提醒未完成的
已经办完的事项不该继续标红。加一个状态判断:
=AND($E2<>"已完成",$D2<>"",$D2<TODAY())
这样勾掉状态后颜色自动消失,比手工清格式省事。
五、配合图标和文字提醒
颜色之外,加一列计算文案更容易被注意到:
=IF($D2="","",IF($D2<TODAY(),"已逾期 "&TODAY()-$D2&" 天",
IF($D2-TODAY()<=7,"剩 "&$D2-TODAY()&" 天","")))
再对这一列设条件格式:非空就加粗变红。文字 + 颜色双通道,比单靠颜色更不容易漏。
六、今天没变化?
TODAY() 是易失函数,理论上每次重算都会更新,但工作簿若被设成手动计算,或文件整天开着不重算,颜色就不会变。
两种应对:
- 确认"公式 → 计算选项"为自动;
- 在表头加一格
=TODAY(),打开文件时按 F9 强制重算,顺便让人知道提醒是基于哪天的。
七、常见坑
| 现象 | 原因 | 处理 |
|---|---|---|
| 空白行全部变红 | 空值被当 0 | 加 $D2<>"" 判断 |
| 只有一格变色 | 引用写成 D$2 | 改成 $D2 锁列 |
| 颜色叠在一起乱了 | 多规则都命中 | 勾"停止如果为真",调顺序 |
| 跨电脑打开不提醒 | 计算选项为手动 | 改自动 |
| 日期其实是文本 | 导入未转换 | 用 ISNUMBER 检查并转换 |
八、速查
| 需求 | 公式 |
|---|---|
| 7 天内 | =AND($D2<>"",$D2-TODAY()<=7,$D2-TODAY()>=0) |
| 已逾期 | =AND($D2<>"",$D2<TODAY()) |
| 工作日 5 天内 | =AND($D2<>"",NETWORKDAYS(TODAY(),$D2,节假日)<=5) |
| 剩余比例 | =AND($C2<>"",($C2-TODAY())/($C2-$B2)<=0.2) |
| 排除已完成 | =AND($E2<>"已完成",$D2<TODAY()) |
提醒类表格的成败不在公式多精妙,而在于有没有人真的打开它。把提醒做到让人不得不看的程度,才算做完了。