excel数组公式,最适合搞定普通函数绕半天都麻烦的统计场景,比如“多条件同时判断后求和”“多列一起参与计算”“一对多提取结果”“筛选后去重排序”。思路很简单:先把统计目标拆成条件数组和数据数组,再用sum、if、sumproduct、filter、unique这类函数,把数组结果汇总或者直接展开就行。
咱们操作的软件是Excel。旧版Excel的传统数组公式,一般得按Ctrl+Shift+Enter三键确认才能生效;Microsoft 365或者更新的Excel版本支持动态数组,很多公式敲完回车就能直接溢出结果。写之前先确认下自己用的是哪个版本,能少踩很多坑。
第一步:先判断这个问题是否需要数组公式
要是单条件求和,SUMIF、COUNTIF完全够用;但你需要让一整片单元格同时参与判断,一次性算出所有判断结果的话,就可以用数组公式。常见的使用场景有多条件判断、跨多列求和、按条件提取多条记录、去重后排序这几类。

判断类数组公式的核心,是让公式一次处理一整个区域的数据。举个例子,你可以把D3:D8里的所有成绩挨个拿去比对,直接批量返回“及格”或者“不及格”。要是在公式栏看到外面套了一层花括号,说明这是传统数组公式,别自己手动打花括号,得按前面说的组合键自动生成。
第二步:把统计条件和数据区域分开写清楚
做复杂统计别上来就硬写长公式,先圈出三个要素:条件列在哪、条件值在哪、要统计的数据区域在哪。比如按产品名称统计前三个月总销量,条件列就是产品名称列,条件值是右侧查询表里的对应名称,数据区域就是1月到3月的所有销量列。

这个场景的公式可以这么写:=SUM(IF(B$2:B$13=G2,C$2:E$13))。公式会先判断B列里哪些产品和G2的名称一致,再把对应行C到E列的销量拿给SUM汇总。旧版Excel输完之后得按Ctrl+Shift+Enter三键确认,就能直接算出对应产品前三个月的销量合计。
第三步:用逻辑值相乘替代一部分 IF 判断
数组公式里的TRUE和FALSE是能直接参与运算的:TRUE等于1,FALSE等于0。利用这个特性,我们可以把条件判断写成(B$2:B$13=G2)*C$2:E$13,满足条件的行数据会保留原值,不满足的直接被乘成0。

对应公式就是=SUM((B:B=G2)*C:E)。它比套IF的写法更短,读起来也更贴合“先按条件筛数据再乘数据区域”的逻辑。这里要注意行数必须对齐,要是条件区域B2:B13和数据区域C2:E13的行数对不上,结果很容易出错或者算错数。
第四步:不想按三键确认时,用 SUMPRODUCT 承接数组计算
要是你用的是旧版Excel,又嫌每次按Ctrl+Shift+Enter太麻烦,可以优先用SUMPRODUCT函数。它本身就支持直接处理数组相乘和汇总,绝大多数条件统计公式输完直接按回车就能出结果。

刚才那个多列求和的场景,公式可以改成=SUMPRODUCT((B$2:B$13=G2)*C$2:E$13)。好处是确认操作简单,适合需要经常下拉填充的统计表;缺点是数据量特别大的时候计算会比较占内存,尽量别用整列引用。
第五步:用动态数组函数处理一对多提取
如果你用的Excel支持动态数组功能,很多复杂统计没必要非得写传统数组公式。比如做一对多查找的时候,可以先用UNIQUE提取出所有不重复的类别,再用FILTER筛选出某个类别对应的全部结果,最后用TRANSPOSE横向铺开就行。

这类动态数组公式的核心是要留出足够的溢出空间。比如=TRANSPOSE(FILTER(B$2:B$17,A$2:A$17=D3))会把所有符合D3类别的结果横向铺开,要是公式右侧的单元格里已经有内容,Excel就会报溢出错误。提前把结果区域清空,再输入公式,一般就能正常展开所有结果。
第六步:检查数组公式有没有算错范围
数组公式出问题,十有八九不是函数名写错,而是选的区域大小对不上。排查的时候重点查三个地方:条件区域和数据区域的行数是不是一致、单元格的锁定符号能不能支持下拉填充、结果要溢出的区域有没有被其他内容挡住。
要是算出来的结果明显偏大,大概率是把不该统计的列也选进了数据区域;要是结果直接返回0,先检查条件值里有没有多余空格、全角半角格式不对,或者文本和数字混排的情况;要是弹出溢出错误,就看结果要展开的位置是不是已经填了别的内容。把这几处都排查一遍,绝大多数数组公式的统计问题都能找到原因。











