分享

用 Excel 判断是否闰年太简单了,不信看看这 6 个公式

 恶猪王520 2022-05-16

那就满足大家的心愿,一次教大家 6 个公式。

案例:

用不同的方式判断 A 列中的年份是否为闰年,效果如下图 2 所示。

图片
图片

解决方案 1:

1. 在 B2 单元格中输入以下公式 --> 下拉复制公式:

=IF(COUNT(--(A2&'-2-29')),'是','')

公式释义:

  • (A2&'-2-29'):结果为“2010-2-29”,这是一个文本值

  • --(...):

    • “--”的作用是将文本转换为数值;

    • 如果上述日期存在,则返该日期对应的数值;如果不存在,则返回错误值 #VALUE!

  • COUNT(...):

    • count 函数的作用是统计数值的个数;

    • 如果日期存在,则 count 结果为 1;不存在的日期为错误值,count 对错误值的统计结果为 0

  • if(...,'是',''):用 if 函数判断 count 函数结果,为 1 则返回“是”,反之留空

图片
图片

解决方案 2:

1. 在 C2 单元格中输入以下公式 --> 下拉复制公式:

=IF(ISNUMBER(--(A2&'-2-29')),'是','')

公式释义:

  • 本公式与前一个公式唯一的区别是将 count 替换成了 isnumber 函数;

  • isnumber 函数的作用是判断参数是否为数值,返回 true 或 false 的逻辑值,相当于 1 和 0,所以在公式中的作用与 count 一样

图片
图片

解决方案 3:

1. 在 D2 单元格中输入以下公式 --> 下拉复制公式:

=IF(MONTH(DATE(A2,2,29))=2,'是','')

公式释义:

  • DATE(A2,2,29):

    • 用 date(年,月,日) 函数生成日期;

    • 因为日期“2010/2/29”不存在,date 会自动延后一日,计算出正确的日期“2010/3/1”

  • MONTH(...)=2:用 month 函数判断上述日期中的月份是否为 2;

  • if(...,'是',''):如果月份为 2 就表示是闰年,如果变成了 3 月,就不是闰年

图片
图片

解决方案 4:

1. 在 E2 单元格中输入以下公式 --> 下拉复制公式:

=IF(DAY(EOMONTH((A2&'-2-1'),0))=29,'是','')

公式释义:

  • EOMONTH((A2&'-2-1'),0):eomonth 的作用是计算出第一个参数值“2010-2-1”所在月的最后一天的日期

  • DAY(EOMONTH((A2&'-2-1'),0))=29:计算上述日期中的日是否为 29

  • if(...,'是',''):如果是 29 就表示是闰年,否则就不是闰年

有关 eomonth 函数的详解,请参阅 Excel – 几千行日期,如何快速算出每个日期当月有几天?

图片
图片

解决方案 5:

1. 在 F2 单元格中输入以下公式 --> 下拉复制公式:

=IF(DAY(DATE(A2,3,0))=29,'是','')

公式释义:

  • 该公式与解决方案 3 的公式非常接近,唯一区别是前一个公式用 month 函数判断月份是否为 2 月,而此处是用 day 函数判断日是否为 29。

图片
图片

解决方案 6:

1. 在 G2 单元格中输入以下公式 --> 下拉复制公式:

=IF((--A2&'-12-31')-(--A2&'-1-1')=365,'是','')

公式释义:

  • (--A2&'-12-31')-(--A2&'-1-1')=365:

    • 分别生成当年的最后一天和第一天的日期,并用“--”将日期转化成数值;

    • 将两个日期相减,如果差值为 365,说明总天数为 366,即闰年

  • 最后通过 if 函数返回上述判断结果

图片
图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多