Excel 按日自动计算剩余缴费天数,当年缴完后如何自动跨年计算?
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。
今天的案例非常实用。很多家庭都买过保险,可以做个缴保费管理和提醒表,方便提前储备资金。
那么问题来了,如何让它自动计算离缴费日还有几天?如果今年已经缴完了,如何让它自动计算与明年缴费日的相差天数?
案例:
根据下图 1 的缴费日,每天自动计算出离缴费日还剩几天?如果当天日期已经超过缴费日,则自动计算离明年的缴费日还有几天?
最后显示红绿灯作为提醒:
- >=150 天:绿灯
- >=60 天且 <150 天:黄灯
- <60 天:红灯
效果如下图 2 所示。
解决方案:
计算倒计时,原理无非就是将缴费日与今天的日期相减,计算出相差的天数。
我们看一下日期格式,虽然显示的是月、日,但其实是由完整的年、月、日组成的。
那也就是说,这个年份必须每年自动递增,才能正确计算出与当天日期的差值。
所以第一步,先把日期格式变一下,让年份可以自动变成当下的年。
1. 在 C2 单元格中输入以下公式 --> 下拉复制公式:
=DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))
公式释义:
- YEAR(TODAY()):当前日期的年;
- MONTH(B2):B2 单元格中日期的月;
- DAY(B2):B2 单元格中日期的日;
- DATE(...):由上述年、月、日组合成一个新的日期
接下来,只需在上述公式外面套个 datedif 公式,就能计算出两个日期相差的天数了。
2. 在 C2 单元格中输入以下公式 --> 下拉复制公式:
=DATEDIF(TODAY(),DATE(YEAR(TODAY()),MONTH(B2),DAY(B2)),"d")
公式释义:
- DATEDIF(TODAY(),...,"d"):
- datedif 函数的作用是计算两个日期之间相隔的天数、月数或年数;
- 语法为 DATEDIF(起始日期,结束日期,要返回的类型);
- 参数 "d" 表示返回天数
3. 按 Ctrl+1 --> 将 C2 单元格的格式修改为“常规”--> 向下拖动复制公式
我们可以看到有部分单元格返回的是错误值。这是因为 datedif 函数规定结束日期必须大于等于起始日期。
这里就涉及到跨年的问题了,如果今天的日期已经超过了缴费日,说明今年已经缴费结束了,需要提醒的是明年的日期。
那么现在要计算的其实是今天与明年的缴费日之间相差的天数。
那很简单,可以再升级一下公式。
4. 将 C2 单元格中的公式修改如下 --> 下拉复制公式:
=IFERROR(DATEDIF(TODAY(),DATE(YEAR(TODAY()),MONTH(B2),DAY(B2)),"d"),DATEDIF(TODAY(),DATE(YEAR(TODAY())+1,MONTH(B2),DAY(B2)),"d"))
公式释义:
- 别看公式挺长,其实无非就是外面套了 iferror,加了个条件;
- IFERROR(...,DATEDIF(TODAY(),DATE(YEAR(TODAY())+1,MONTH(B2),DAY(B2)),"d")):当原来的公式出错时,使用第二个公式;
- 第二个公式唯一的区别是在 YEAR(TODAY()) 后面 +1,也就是把年份增加了一年,这样就变成了计算次年缴费日的所剩天数
这里还有个知识点,如果缴费日在 1/1 日,永远都是跨年提醒,所以公式中的第一段可以删除,只需比较次年。
5. 将 C6 单元格的公式修改如下:
=DATEDIF(TODAY(),DATE(YEAR(TODAY())+1,MONTH(B6),DAY(B6)),"d")
接下来设置红绿灯。
6. 选中 C2:C7 区域 --> 选择任务栏的“开始”-->“条件格式”-->“新建规则”
7. 在弹出的对话框的“格式样式”中选择“图标集”。
8. 按以下方式设置 --> 点击“确定”:
- 图标样式:选择三色红绿灯;
- 将“类型”都修改为“数字”;
- 绿灯的值设为 150,黄灯的值设为 60
这样就做成了一个非常好用的家庭版保单管理表。