跳到主要内容

用条件格式做到期提醒

合同到期、证件年检、任务截止、会员续费——这类"到点要办"的事,靠人盯表格一定会漏。条件格式能做到提前变黄、到期变红,一眼就知道该处理谁。

一、日历天提醒:最简单的版本​

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() 是易失函数,理论上每次重算都会更新,但工作簿若被设成手动计算,或文件整天开着不重算,颜色就不会变。

两种应对:

  1. 确认"公式 → 计算选项"为自动;
  2. 在表头加一格 =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())

提醒类表格的成败不在公式多精妙,而在于有没有人真的打开它。把提醒做到让人不得不看的程度,才算做完了。