=DATE($B$1,$D$1+1+D3,0)
=DATE(年,月,日)
$D$1+1才是本月最后一天。
还有一种是日期用2025/11/30,遇到这种就要配合EDATE函数。
=EDATE($E$1+1,D3)-1
语法:负数就是之前,正数就是之后。
=EDATE(日期,之前或之后几个月)
公式里面的+1和-1,是为了能够得到每个月的最后一天,防止函数出现一些小细节的错误,比如返回2025/12/30,这一天并不是最后一天。
再来看学员实际的问题,日期是拆分在多个单元格,因此用DATE函数获取。接下来,还得判断0.5这个问题,用MOD函数。

=MOD(D3,1)
再嵌套IF函数,如果为0.5就返回15,否则0。
=IF(MOD(D3,1)=0.5,15,0)
再结合原来的DATE函数。
=DATE($B$1,$D$1+D3+1,IF(MOD(D3,1)=0.5,15,0))
最后再添加点固定的文本,可以用&连接,连接的时候日期会变成数字需要再嵌套TEXT函数。
=”RF发票(“&TEXT(DATE($B$1,$D$1+D3+1,IF(MOD(D3,1)=0.5,15,0)),”e/mm/dd”)&”前付)”
当然,&也可以去掉,进行简化。
=TEXT(DATE($B$1,$D$1+D3+1,IF(MOD(D3,1)=0.5,15,0)),”RF发票(e/mm/dd前付)”)
写公式的时候,如果不是很熟练,可以尝试将公式拆分成多个简单的公式,最后再一点点组合起来。