1

I want to return the 30th of each day for the previous month in excel. I used:

EOMONTH(A1,-1)

But that will always return the last day of the prevois month. How could you do it so for example the 30th June will return the 30th May NOT 31st May which is returned by the 'EOMONTH' function.

Thanks

4

3 回答 3

4

您也许可以使用 aIF()和 aTEXT()来做到这一点。

=IF(TEXT(EOMONTH(A1,-1),"dd")="31",EOMONTH(A1,-1)-1,EOMONTH(A41,-1))

如果日期EOMONTH(A1,-1)31,则减少一天,否则,取该日期本身。

于 2013-06-03T16:03:38.480 回答
3

类似于布赖恩的解决方案,但缩短了......

=MIN(EOMONTH(A1,{-2,-1})+{30,0})

于 2013-06-03T17:28:03.073 回答
3

这是另一个也将处理二月的解决方案:

=MIN(DATE(YEAR(A1),MONTH(A1)-1,30),EOMONTH(A1,-1))

换句话说,取上个月的第 30 天,或上个月的最后一天,以较早者为准。请注意,DATE()它将正确处理一月份的日期。根据帮助,DATE()在这种情况下,“......从指定年份的第一个月减去该月数的大小,加 1。例如,DATE(2008,-3,2) 返回代表的序列号2007 年 9 月 2 日。”

于 2013-06-03T16:30:14.823 回答