使用ARRAYFORMULA与IF函数时,含空单元格的求和异常问题
公式的核心疏漏
- 完全未关联A/B/C列的判断逻辑:你的公式仅检查
I60和J60是否为空,完全没把A/B/C列的取值情况纳入判断条件。所以当只有A/B/C列有值时,只要I60或J60为空,公式就会直接返回空值,自然无法得到结果。 - 计算逻辑与时间跟踪需求脱节:从你描述的表格布局来看,A/B/C对应常规班次时长、G/H/I对应班后额外时长,但公式中计算的是
J60+D60,既没用到A/B的开始结束时间计算常规时长,也没关联G/H/I的额外时长计算,等于公式的计算对象和你实际要统计的内容完全不匹配。 - 空值判断逻辑不符合需求:
ISBLANK(I60)+ISBLANK(J60)的逻辑是「只要I60或J60为空,就返回空」,但你需要的应该是分场景判断:要么用A/B/C计算常规时长,要么用G/H/I计算额外时长,而非现在这种仅依赖两个无关单元格的单一条件。
修正示例(匹配你的时间跟踪逻辑)
如果要实现「有常规班次时间(A/B有值)则计算常规时长,有额外时长(G/H有值)则计算额外时长,两者都有则相加」的效果,可以使用类似下面的公式(可根据实际单元格对应关系调整):
=ARRAYFORMULA( IF( (NOT(ISBLANK(A:A)) * NOT(ISBLANK(B:B))) + (NOT(ISBLANK(G:G)) * NOT(ISBLANK(H:H))), IFERROR( IF(NOT(ISBLANK(A:A)) * NOT(ISBLANK(B:B)), B:B - A:A, 0) + IF(NOT(ISBLANK(G:G)) * NOT(ISBLANK(H:H)), H:H - G:G, 0), "" ), "" ) )
注:这里假设常规时长为结束时间减开始时间(B-A),额外时长为H-G,总时长是两者之和,你可根据实际规则修改单元格引用和计算方式。
内容的提问来源于stack exchange,提问作者Moses o
相关产品推荐
相关产品推荐

