Google Sheets:含总计排序时防止ARRAYFORMULA打乱列及筛选异常
解决方案
步骤1:拆分公式,固定表头与SUM行
- 在第1行(A1)手动输入表头:
Number of purchases,并在此行启用筛选。 - 在第2行(A2)输入SUM公式(计算所有数据行的总和,不受筛选排序影响):
=SUM(ARRAYFORMULA(IF(ISBLANK(A3:A),,SUMIF('Raw Data'!A:A,A3:A,'Raw Data'!B:B)+SUMIF('Raw Data'!A:A,B3:B,'Raw Data'!B:B)))) - 在第3行(A3)输入数据计算的数组公式:
=ARRAYFORMULA(IF(ISBLANK(A3:A),,SUMIF('Raw Data'!A:A,A3:A,'Raw Data'!B:B)+SUMIF('Raw Data'!A:A,B3:B,'Raw Data'!B:B)))
步骤2:优化数据计算公式(可选)
用BYROW简化两次SUMIF的重复计算,提升效率:
=ARRAYFORMULA(IF(ISBLANK(A3:A),,BYROW(A3:B, LAMBDA(row, SUMIF('Raw Data'!A:A, row, 'Raw Data'!B:B)))))
步骤3:正确排序数据
排序时仅选中第3行及以下的数据区域执行排序操作,第1行(表头)和第2行(SUM结果)会保持固定位置,不会被移动。
问题根源
原公式将表头、SUM结果、数据行合并为一个动态数组,导致SUM行被识别为普通数据行,排序时会被打乱位置;同时SUM(C3:C)的范围会因筛选隐藏行而计算错误。拆分后,表头与SUM行独立于数据区域,SUM基于动态计算的结果总和,完全不受筛选排序的影响。
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

