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


这样就做成了一个非常好用的家庭版保单管理表。