亲爱的小伙伴们,跟我学EXCEL系列福利来了,从初级一直到高级学习EXCEL系列文章,结合财务实际应用讲解,配合动图细节演示,通俗易懂,是一套比较系统的不可多见学习EXCEL的好文章。持续更新中!

本系列文章包括基础篇(包括技巧、函数)、进阶篇(主要是数据透视表)、高级篇(主要是Power Query)。

希望大家喜欢,欢迎提出宝贵意见和建议!

今天我们继续学习函数及相关内容。

二、EXCEL基础篇-函数15

21、日期函数EOMONTH

EOMONTH的函数表达式=EOMONTH(参数日期,整数),结果是某个月份的最后一天。

如果第二个参数是0,函数结果是参数日期月份当月最后一天,1是下月最后一天,2是下下月最后一天,-1是上月最后一天,-2是上上月最后一天,其他的以此类推。

比如 =EOMONTH(2022-3-10,0)的结果是2022-3-31

=EOMONTH(2022-3-10,1)的结果是2022-4-30

=EOMONTH(2022-3-10,2)的结果是2022-5-31

=EOMONTH(2022-3-10,-1)的结果是2022-2-28

=EOMONTH(2022-3-10,-2)的结果是2022-1-31

其他的整数以此类推。

(1)获取当月的准确天数

获取当天的函数是TODAY,通过EOMONTH获取当月最后一天的日期,通过DAY获取对应天数,就是当月的天数,公式是=DAY(EOMONTH(TODAY(),0))。今天是2022-3-10,当月的天数就是31天,这个比较简单。

(2)SUMIFS和EOMONTH结合的一种特殊用法:按月求和

财务数据处理主要类型为数值和日期,按月求和数值是一个常见的情形,后面学到的数据透视表可以非常方便的实现这个功能,但有时候不方便用数据透视表来做,或者就想用函数来实现这个功能,我们就可以考虑这样来做。

我们来看一个案例。有这样一个表,如下:

日期

金额

2018-1-8

15,855.00

2018-1-8

10,000.00

2018-1-8

8,000.00

2018-1-8

5,000.00

2018-1-8

8,000.00

2018-1-8

12,900.00

2018-1-8

5,000.00

2018-2-1

1,600.00

2018-2-9

18,000.00

2018-2-17

20,000.00

2018-2-25

1,500.00

2018-3-5

7,000.00

2018-3-13

1,500.00

2018-3-21

1,600.00

2018-3-29

12,300.00

2018-4-6

9,900.00

2018-4-14

5,000.00

2018-4-22

10,000.00

2018-4-30

10,000.00

2018-5-8

17,750.00

2018-5-16

11,250.00

2018-5-24

8,000.00

2018-6-1

40,000.00

2018-6-17

10,290.00

2018-6-25

10,000.00

2018-7-3

9,900.00

2018-7-11

5,000.00

2018-7-19

10,000.00

2018-7-27

10,000.00

2018-8-4

17,750.00

2018-8-12

11,250.00

2018-8-20

8,000.00

2018-8-28

40,000.00

2018-9-5

10,000.00

2018-9-13

10,290.00

2018-9-21

10,000.00

2018-9-29

10,000.00

按月份求和

先建立一个日期列表,设置为月份格式。

重点是设置思路,利用EOMONTH取得参数月的首日和最后一天,用SUMIFS函数按大于等于参数月首日,小于等于参数月最后一天这两个条件求和。

可能大家会有疑问EOMONTH只能得到最后一天,首日如何得到?换个思路就容易了,上个月最后一天加上1不就是当月第一天吗?比如参数日期2018-1-5(只要是2018年1月任何一个日期就行)想得到2018-1-1,先用=EOMONTH(2018-1-5,-1)得到2017-12-31,加1就是2018-1-1,也就是“=EOMONTH(2018-1-5,-1)+1”的结果就是2018-1-1。

要注意的一点就是数值的大于等于可以直接输入,日期的大于等于需要加英文状态下的双引号和连接符来表达。比如大于等于2018-1-1,EXCEL中的表达式是">="&2018-1-1,小于等于一样的设置,这样根据这个思路最终E2单元格的公式为:

=SUMIFS($B:$B,$A:$A,">="&EOMONTH(D2,-1)+1,$A:$A,"<="&EOMONTH(D2,0))