如何将条件平均公式转为高效ArrayFormula?解决结果错误问题
解决逐行条件平均值的数组公式问题
问题原因
你之前的数组公式错误在于:AVERAGE(C2:C,D2:D,F2:F) 会计算这三列所有非空单元格的整体平均值,而非每行对应位置的C、D、F单元格的平均值,这就导致结果和下拉填充的逐行计算逻辑不符。
正确数组公式
使用「逐行求和除以非空单元格计数」的方式模拟AVERAGE的逻辑,同时用ArrayFormula一次性计算所有行:
=ArrayFormula(IFERROR(IF(B2:B="Admin",(C2:C+D2:D+F2:F)/((C2:C<>"")+(D2:D<>"")+(F2:F<>"")), (C2:C+F2:F+G2:G+H2:H)/((C2:C<>"")+(F2:F<>"")+(G2:G<>"")+(H2:H<>""))),""))
公式说明
(C2:C + D2:D + F2:F):逐行计算Admin行对应三个单元格的总和((C2:C<>"")+(D2:D<>"")+(F2:F<>"")):逐行统计这三个单元格中的非空数量(布尔值TRUE会被视为1,FALSE视为0)- 两者相除得到每行的平均值,和原下拉公式的
AVERAGE逻辑完全一致 IFERROR(..., ""):处理除数为0(即所有单元格为空)的情况,返回空字符串
这个数组公式只需输入一次即可覆盖所有行,避免了下拉填充的重复计算,能显著提升2000行表格的运行速度。
内容的提问来源于stack exchange,提问作者mcclosa
相关产品推荐
相关产品推荐

