答案1
您的公式没有问题,但可能不是您想要使用的公式。还有另一个 Excel 公式:
=WEEKNUM(serial_num, [return_type])
这将返回您期望得到的结果。但是,您应该首先检查哪种类型的周数更适合您的应用程序。
让我进一步解释一下:
这ISOWEEKNUM(日期)函数的工作原理是,一周总是从星期一开始,到星期日结束,然后设定标准,即一年的第一周是包含该年第一个星期四的那一周。这意味着前一年最后几天可以标记为下一年的第一周。
这WEEKNUM(日期,开始日期)函数从包含 1 月 1 日的那一周开始计数。因此 1 月 1 日是第 1 周的第一天。默认情况下,新一周从星期日开始,因此第 2 周从 1 月 1 日之后的第一个星期日开始。您可以使用函数中的第二个参数更改开始日期。换句话说,如果 1 月 1 日是星期六并且使用默认开始日期,则第一周可以有 1 天。<- 这是理解 WEEKNUM() 函数背后的关键。
我创建了一个包含您的日期值的小型电子表格,并添加了一些日期值来演示差异:
请注意,并非只有 2018 年,一年的最后一天位于下一年的第一周。ISOWEEKNUM() 函数运行正常,只是对第一周的开始时间有不同的解释。
另一种观察这一现象的方式是查看跨越 1 月 1 日的一天内的 2 个函数:
2015 年 1 月 1 日是星期四。因此,ISOWEEKNUM() 周函数包括 12 月的最后 3 天,而 WEEKNUM() 函数从 1 月 1 日开始一周,但默认开始日为星期日,第一周只有 3 天。
我希望这可以解释差异。
答案2
该函数似乎在 2018 年出现故障,因为它将 2018 年 12 月 31 日的周数显示为第 1 周
这是正确的,因为 2018 年 12 月 31 日是星期一。
如果 12 月 31 日是星期一、星期二或星期三,则为下一年的第 01 周。如果是星期四,则为刚结束的一年的第 53 周;如果是星期五,则为第 52 周(如果刚结束的一年是闰年,则为第 53 周);如果是星期六或星期日,则为刚结束的一年的第 52 周。