这应该适用于任何版本的 Excel 中任何一年的任何一天,直到 2078 年(在 Excel 2007 或更高版本中更长)。
=SUM(IF(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16},1,0))
请注意,我在 1 天的偏移量上检查第 1 天或第 16 天(这个想法是为了解决不同的月末 DAY() 值)。
{数组公式...按Ctrl+Shift+Enter提交}
[附录]
如果您不想包含当天(例如,假设今天是 8 月 15 日),请改用:
=SUM(IF(DAY(ROW(OFFSET($A$1,TODAY()+1,0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16},1,0))
附:从今天到 2016 年闰日及以后的所有日期,我都进行了测试,效果很好。所有这些都是测试被DAY() 函数视为日期序列的行号,以查看它们是 1 还是 16,但序列被 +1 偏移,所以它真的在检查 DAY() 是否是 [最后一天无论月份] 或 15。如果结果为真,则加 1,否则加 0。
[更多附录]
以下是 非数组 版本,否则它们的工作方式相同:
包括当天:
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))
不包括当天
=SUMPRODUCT(N(DAY(ROW(OFFSET($A$1,TODAY(),0,DATE(YEAR(TODAY()),12,31)-TODAY()+1)))={1,16}))