某年某月有多少天,在日常生活中经常会遇到,是一个非常简单的问题。
口诀法
一三五七八十腊,三十一天永不差,四六九冬三十日,平年二月二十八,闰年二月把一加。
拳头法
虽然大小月看似杂乱无章,但是使用“拳头记忆法”却能快速区分大小月。所谓“拳头记忆法”,其实就是数手指的关节。
当关节凸出来的时候,表示这个月有31号,也就是大月;当关节没有凸出来的时候,表示这个月没有31号,也就是小月。
具体方法是:任意一只手握拳,从食指关节开始数。食指关节凸起处表示“1月大”,也就是说1月有31号;食指和中指关节之间的凹陷处表示“二月小”,也就是说2月没有31号(2月为特例,实际只有28或29天)。
然后一直数到小指关节凸起处,表示“7月大”。此时需要注意,从小指关节逆向继续计数时,小指关节凸起处要重复一次,表示“8月大”。因为7、8两个月份都有31号。
最后一直数到中指关节凸起处,表示“12月大”。这样一轮“拳头记忆”就结束了。
只需要从食指关节开始,沿手指关节往返计数一个来回,就可以轻轻松松搞清楚大小月。
如图:

现在问题来了,我们如何在Excel中精确地获取当月的天数呢,总不能把拳头塞进表格里吧,玩笑一下。
我们使用EOMONTH 函数即可轻松搞定这样的问题。
官方函数定义:返回某个月份最后一天的序列号,该月份与 start_date 相隔(之后或之后)指示的月份数。使用函数 EOMONTH 可以计算正好在特定月份中最后一天到期的到期日。
解赋大白话:用于返回指定日期所在月份的最后一天的日期
官方格式:EOMONTH(start_date,months)
解赋白话格式:EOMONTH(开始日期,月数)
参数定义
start_date:必需。指定表示日期的数值(序列号值)或单元格引用。"start_date"的月份被视为"0'进行计算。
months:必需.指定月份数。小数部分的值被向下舍入,若指定数值为正数则返回"start_date"之后的日期(指定月份数之后的月末),若指定数值为负数则返回"start_date"之前的日期(指定月份数之前的月末)。
要点:
当数字显示格式为"常规"时,返回值以表示日期的数值(序列号)的形式显示。要转换成日期显示必需通过"设置单元格格式"对话框将数字显示格式转换为日期"格式。
注意事项:
1、如果返回的序列号值小于1,或者大于2958465时,则函数返回错误值"#NUM!"。此外,当指定了无效的日期时,函数返回错误值"#VALUE!".使用函数时要注意确认参数是否正确。
2、如果months不是整数,将截尾取整。
3、注意使用些函数必需安装"分析工具库"加载宏。
4、EOMONTH函数只能用于处理日期类型的数据,如果需要对日期时间类型的数据进行计算,应使用DATEADD函数。
例
如我们将第一参数设置为2020/1/8,分别将第二参数设置为-2,-1,0,1,2结果如下图,将第二参设设置为-1就会返回2019年12月的最后1天,设置为0就会返回当月的最后一天,设置为1就会返回下个月的最后一天,以此类推。

例1、计算指定月份数之前或之后的月末:计算下次付款日期

例2、本月有几天
说明:当前编辑日期是2023年6月20日

B3=DAY(EOMONTH(NOW(),0))
获取当月的天数我们可以使用TODAY函数来返回今天的日期,然后将这个日期作为EOMONTH函数函数的第一参数,将EOMONTH函数的第二参数设置为0,最后我们使用DAY函数提取当月最后一天日期的天数,最后将格式设置为常规格式即可。
例3、生成本月月初日期

解赋解析:
=返回月末(当前日期(),-1)+1
说明:当前编辑日期是2023年6月20日
当前日期-1,再EOMONTH函数得到上月月未日期,+1,转到本月初日期。
应用场景:EOMONTH常用于考勤表、排班表等需要自动更新日期的表格模板中。
