Google Sheets:计算时间戳间隔的Arrayformula问题(排除周末与非工作时间)
修复排除非工作时间与周末的时间间隔数组公式
问题根源
单个单元格公式能正常计算,但转为ARRAYFORMULA后失效,核心原因包括:
- 未过滤空行,导致数组运算产生无效值
- 部分函数参数未适配数组遍历逻辑,日期拆分、时间范围判断的逻辑在数组中未正确执行
- 相对引用未调整为整列范围引用,无法批量处理多行数据
修复后的数组公式
=ARRAYFORMULA(IF(A2:A="",, NETWORKDAYS.INTL(INT(A2:A), INT(B2:B), 1) * ("18:00" - "09:00") + IF(WEEKDAY(B2:B, 2) < 6, MEDIAN(MOD(B2:B, 1), "18:00", "09:00") - "09:00", 0) - IF(WEEKDAY(A2:A, 2) < 6, MEDIAN(MOD(A2:A, 1), "18:00", "09:00") - "09:00", 0) ))
公式逻辑说明
- 空行过滤:
IF(A2:A="",,)仅处理存在开始时间的行,避免空值干扰数组运算 - 工作日整段时长计算:
NETWORKDAYS.INTL(INT(A2:A), INT(B2:B), 1)统计两个日期间的工作日数量(参数1代表周末为周六、周日),乘以每日有效工作时长(9小时) - 结束日有效时长:若结束日为工作日,用
MEDIAN提取结束时间在9:00-18:00时段内的部分,计算从上班时间到该时间的时长;非工作日则计为0 - 开始日有效时长扣除:同理计算开始日的有效时长(从开始时间到下班时间),从总时长中扣除,避免整段工作日时长计算时的重叠重复
内容的提问来源于stack exchange,提问作者Wesley Hopkins
相关产品推荐
相关产品推荐

