使用Arrayformula+IFS函数未在列中展开输出结果求解决方案
问题分析与解决建议
原公式无法在整行展开结果的核心原因:Google Sheets中,OR函数在ARRAYFORMULA内不会对数组元素逐个进行逻辑判断,而是返回整个数组的单一布尔值,导致公式只能输出单个结果,无法逐行生成对应周编号。
修正方案
方案1:替换OR为数组兼容的逻辑运算
用+替代OR(数组中+等价于逐元素逻辑或,*等价于逐元素逻辑与),修改后的公式如下:
=ARRAYFORMULA(IFS( (DAY(C5:C35)>=1)*(DAY(C5:C35)<=7)+(DAY(C5:C35)>=15)*(DAY(C5:C35)<=21)+(DAY(C5:C35)>=29)*(DAY(C5:C35)<=31), 1, (DAY(C5:C35)>=8)*(DAY(C5:C35)<=14)+(DAY(C5:C35)>=22)*(DAY(C5:C35)<=28), 2, TRUE, "" ))
方案2:改用IF嵌套(更直观的数组兼容写法)
如果觉得IFS的数组逻辑不好调试,也可以用IF嵌套实现,同时增加空值判断避免无效计算:
=ARRAYFORMULA(IF(ISBLANK(C5:C35),"", IF( (DAY(C5:C35)>=1)*(DAY(C5:C35)<=7)+(DAY(C5:C35)>=15)*(DAY(C5:C35)<=21)+(DAY(C5:C35)>=29)*(DAY(C5:C35)<=31), 1, IF( (DAY(C5:C35)>=8)*(DAY(C5:C35)<=14)+(DAY(C5:C35)>=22)*(DAY(C5:C35)<=28), 2, "" ) ) ))
额外说明
将公式放在E5单元格后,只要C列对应行有日期数据,公式会自动向下展开生成对应周编号;若C列为空,会返回空值避免冗余内容。
内容的提问来源于stack exchange,提问作者Hassan Almaateeq
相关产品推荐
相关产品推荐

