如何用Excel IF函数为大数据集生成月末发票日期?
实现每月交易对应当月最后一天发票日期的方法
嘿,针对你这个需求,用IF函数确实能搞定,但其实有更简洁高效的方案!先给你说IF函数的写法,再推荐更省心的函数~
用IF函数实现(嵌套写法)
因为需要判断12个不同的月份,所以得嵌套11层IF(最后一个月份直接返回结果),公式如下:
=IF(MONTH(A2)=1, DATE(2017,1,31), IF(MONTH(A2)=2, DATE(2017,2,28), IF(MONTH(A2)=3, DATE(2017,3,31), IF(MONTH(A2)=4, DATE(2017,4,30), IF(MONTH(A2)=5, DATE(2017,5,31), IF(MONTH(A2)=6, DATE(2017,6,30), IF(MONTH(A2)=7, DATE(2017,7,31), IF(MONTH(A2)=8, DATE(2017,8,31), IF(MONTH(A2)=9, DATE(2017,9,30), IF(MONTH(A2)=10, DATE(2017,10,31), IF(MONTH(A2)=11, DATE(2017,11,30), DATE(2017,12,31) ) ) ) ) ) ) ) ) ) ) )
- 解释:
MONTH(A2)提取原始日期列(假设是A列)的月份数字,然后逐个匹配1-11月,分别返回2017年对应月份的最后一天,12月直接返回Dec-31-2017。 - 注意:这个写法的缺点是嵌套层级多,容易输错,而且如果后续年份变化,需要手动修改每个
DATE函数里的年份参数。
更优解:用EOMONTH函数
Excel里专门有个函数就是干这个的——EOMONTH,它直接返回指定日期所在月份的最后一天,公式超简单:
=EOMONTH(A2, 0)
- 解释:
A2是你的原始日期单元格;- 第二个参数
0表示“当前月份”,如果填1就是下一个月最后一天,-1就是上个月最后一天,非常灵活; - 这个函数会自动识别年份和当月天数(比如2017年2月是28天,闰年2月会自动用29天),完全不用手动写每个月的最后一天!
格式调整
如果需要把结果显示成Jan-31-2017这种格式,只要选中“Invoice Date”列的单元格,右键选择「设置单元格格式」,在「数字」选项卡的「自定义」里输入mmm-dd-yyyy,确定后就会自动显示成你要的样式啦~
内容的提问来源于stack exchange,提问作者WJ Zhao
相关产品推荐
相关产品推荐

