如何使用ARRAYFORMULA搭配ISOWEEKNUM自动填充列的ISO周数
ISO周数整列自动填充方案
直接在H列首个需要计算周数的单元格(如表头行下方的H2)输入以下公式即可,仅需输入1次,后续B列新增日期会自动生成对应周数:
=ARRAYFORMULA(IF(B2:B="",,ISOWEEKNUM(INT(B2:B))))
公式逻辑说明
- 用开放范围
B2:B覆盖B列所有后续新增的行,给ARRAYFORMULA提供可迭代计算的数组 - 先判断当前行B列是否为空,为空则返回空值,避免无日期的行出现错误值
- 对非空的B列值先用
INT()处理带时间戳的日期格式,再调用ISOWEEKNUM计算ISO周数
原有写法失效原因
- 第一种写法仅传入了单个单元格
B2作为参数,ARRAYFORMULA没有可迭代的数组范围,只能计算B2对应的值,无法向下扩展 - 第二种写法同理仅传入单个单元格
B6,仅能返回B6行的周数结果,覆盖不了整列
可选优化(兼容非法日期格式)
如果需要避免B列非日期内容导致的#VALUE!报错,可以用IFERROR包裹计算逻辑:
=ARRAYFORMULA(IF(B2:B="",,IFERROR(ISOWEEKNUM(INT(B2:B)),"无效日期")))
内容的提问来源于stack exchange,提问作者Sami Chouchane
相关产品推荐
相关产品推荐

