发布日期:2026-06-11 浏览次数:2
你曾经遇到过这样的情况吗?
需要统计"华东地区、2026年6月、销售额大于5000元"的订单总金额——条件有三个,跨越四列数据。使用SUMIFS可以做到,但条件表达式的灵活性有限。需要根据"产品编号"在数据表中查找对应的"产品名称"和"单价",但VLOOKUP只能返回单列数据,要返回两列需要写两个公式。需要计算"所有产品中,销售额超过平均销售额的产品数量"——需要先用AVERAGE算平均值,再统计超过该值的记录数,这通常需要两个步骤。
在遇到"多条件、跨多列、需要中间计算"的复杂场景时,普通函数往往力不从心——要么需要添加多条辅助列,要么需要多个公式嵌套,要么根本无法用单个函数直接实现。
WPS表格的数组公式,正是为解决这类问题而生的。数组公式允许你在一个公式中同时对一组数据(而不是单个单元格)执行计算,并返回单个结果或多个结果。你可以用一条数组公式替代3~5条辅助列公式,让整个工作簿更简洁、更高效。
本文将从数组公式的基本概念开始,系统讲解多条件求和(SUMPRODUCT)、多条件查找(INDEX+MATCH数组版)、条件统计(SUM+IF数组)、以及数组常量和高级组合技,帮助你掌握这个"表格高手"必备的技能。
在WPS表格中,数组就是一组数据的有序集合。它可以是一行数据(水平数组)、一列数据(垂直数组),或者一个矩形区域(二维数组)。
普通公式操作的是单个单元格:=A1+B1——只有一个输入,一个输出。
数组公式操作的是多个单元格:=A1:A10+B1:B10——A1到A10的每个值与B1到B10的对应值相加,生成10个中间结果。这些中间结果可以进一步被处理,如求和、求平均等。
在WPS表格中,输入数组公式后,不能直接按Enter确认。必须按 Ctrl+Shift+Enter(三键组合)来确认输入。
按下Ctrl+Shift+Enter后,公式会被自动包裹在花括号{}中:
花括号是WPS自动添加的,不要手动输入。如果不小心删除了花括号,公式就以普通公式的方式运行,结果往往是错误的。
注意: WPS的新版本中,部分数组函数(如SUMPRODUCT)已经支持直接按Enter确认,但更建议在输入任何数组公式时都使用Ctrl+Shift+Enter,以确保兼容性。
| 特性 | 普通公式 | 数组公式 |
|---|---|---|
| 操作对象 | 单个单元格或单一区域 | 多个单元格的数组 |
| 中间结果 | 不产生中间数组 | 产生中间数组再汇总 |
| 确认方式 | Enter | Ctrl+Shift+Enter |
| 花括号 | 无 | 自动添加,不可手动输入 |
| 计算速度 | 快 | 中等(数据量大时较慢) |
SUMPRODUCT是WPS表格中"最实用"的数组函数之一。它的名字已经说明了它的功能:SUM(求和)+ PRODUCT(乘积)——将数组中对应的元素相乘,然后再求和。
语法:
示例: 计算所有产品的总销售额(数量×单价):
本质上等同于=C2*D2 + C3*D3 + ... + C100*D100。
SUMPRODUCT的真正威力在于条件求和——用一个公式完成"多条件"的筛选和汇总。
需求: 统计"华东地区、A产品、2026年6月"的销售额总和。
数据列:A列(地区)、B列(产品)、C列(日期)、D列(销售额)。
工作原理:
(A2:A100="华东"):判断地区是否为华东——结果为TRUE或FALSE的数组。(B2:B100="A产品"):判断产品是否为A产品。(MONTH(C2:C100)=6)*(YEAR(C2:C100)=2026):判断月份是否为6月且年份为2026。与SUMIFS的对比:
同样的需求用SUMIFS写:
两种实现方式。SUMPRODUCT的优势在于条件可以更灵活(如使用MONTH函数对日期运算),且适用于复杂的逻辑组合(如OR条件)。
如果需要统计符合条件的记录数量(而非求和),可以把SUMPRODUCT当作多条件COUNTIFS来用:
VLOOKUP的局限性在于:只能从"第一列"查找,且返回右侧列的数据。使用INDEX+MATCH的数组组合,可以实现更灵活的多条件查找。
需求: 根据"产品编号"和"仓库编码"两个条件,查找对应的"库存数量"(数据在A列=产品编号、B列=仓库编码、C列=库存数量)。
这个公式使用了数组运算:
(A2:A100="P001") * (B2:B100="WH01"):两个条件相乘,生成一个0和1的数组——只有两个条件同时满足的行对应的值为1,其余行为0。MATCH(1, ..., 0):查找数组中第一个1出现的位置(即两个条件同时满足的第1行)。INDEX(C2:C100, ...):返回对应行的库存数量。注意: 这个公式是数组公式,需要按 Ctrl+Shift+Enter 确认。
如果需要根据同一个条件���找并返回"产品名称"和"单价"两个字段:
=INDEX(B2:B100, MATCH(E2, A2:A100, 0))(E2是查找值单元格)。=INDEX(C2:C100, MATCH(E2, A2:A100, 0))。两条公式,但结构清晰:都是先定位行位置,再取该行的指定列。
VLOOKUP只能从查找列"向右"查找。如果需要根据"产品名称"查找"产品编号"(编号在名称的左边),普通VLOOKUP做不到。
使用INDEX+MATCH的数组方案:
需求: 统计销售额超过平均销售额的订单数量。
D2:D100 > AVERAGE(D2:D100):判断每个销售额是否超过平均值——TRUE/FALSE数组。*1:将TRUE/FALSE转为1/0。SUM:统计1的总数,即超过平均值的记录数量。这是数组公式,需要使用Ctrl+Shift+Enter确认。
需求: 统计华东地区或华南地区的订单数量(满足任意一个条件就算)。
(A2:A100="华东") + (A2:A100="华南"):如果同一行同时为华东和华南(不可能),结果是2;如果满足其中一个,结果是1;如果都不满足,结果是0。>0:将结果转为TRUE/FALSE。需求: 找出华东地区的最高销售额。
同样是数组公式,必须三键确认。
数组常量允许你在公式中直接"写出"一个数组,而不需要引用单元格区域:
应用: 加权评分计算——假设权重为30%、30%、40%,三列数据分别为B、C、D列:
计算B20.3 + C20.3 + D2*0.4 的加权总分。
如果有一个水平数组(一行多列),需要将其作为垂直数组(多行一列)参与计算,可以使用TRANSPOSE函数:
数据表: A列=销售日期、B列=地区、C列=产品、D列=销售额、E列=销售数量。
需求: 统计2026年上半年、华东或华南地区、A产品或B产品的总销售额。
一条公式完成了"年份、月份、地区多选、产品多选的交叉条件筛选"的汇总需求。如果使用普通方法,可能需要添加辅助列、多个公式分步计算——而数组公式一步到位。
数据表: A列=员工姓名、B列=出勤率、C列=业绩评分、D列=360评价。
需求: 计算每位员工的加权绩效总分(出勤率×20%+业绩评分×50%+360评价×30%)。
需求: 在一个单元格中同时计算出3个指标:总客户数、平均消费额、最高消费额。
可以把三个公式写在同一行,分别占用三个单元格。或者用一个组合数组公式返回三个结果(Ctrl+Shift+Enter确认):
选中三个水平相邻的单元格(如F1、G1、H1),输入:
不过需要注意:这种"多单元格数组公式"在编辑时不太方便,不如分别写在三个单元格中直观。更推荐将三个公式分开放置,每个公式专注于一个指标的计算。
数组公式在工作表每次重新计算时,会对数组中的每个元素执行计算。如果数组很大(如10000行),且公式中包含多层条件运算,计算速度会明显变慢。
数组公式的主要优势在于"一个公式替代多个辅助列"——减少工作表的复杂度,降低出错概率。但辅助列的优势在于"计算过程可视化,便于检查"。
建议:对于复杂逻辑的计算,先用辅助列搭建逻辑并验证结果正确性;逻辑确定后,再将辅助列合并为一条数组公式。这种方法既保留了开发阶段的"可验证性",又获得了最终版本的"简洁性"。
编辑数组公式时,需要选中包含公式的单元格(如果是多单元格数组公式,需选中整个数组区域),按F2进入编辑模式,修改后按Ctrl+Shift+Enter确认。
不能单独编辑数组公式区域中的某个单元格——WPS会提示"不能更改数组的某一部分"。需要先选中整个数组区域(如果公式是单单元格数组公式,直接编辑即可)。
A1:A10*B1:B9的维度不一致(10行vs9行),会返回错误。(A2:A100="华东")),按F9查看这段表达式的计算结果——应该看到一组TRUE/FALSE值。{}如果被误删,公式可能仍会运行但结果错误。合并单元格与数组公式的兼容性较差。如果需要在合并单元格中使用数组公式,建议取消合并单元格,或将合并区域中的公式分别处理。
如果文件中包含大量大型数组公式,每次打开文件都需要重新计算所有数组,导致打开速度变慢。
数组公式的核心理念是:用乘法表示AND条件、用加法表示OR条件、将条件结果与数据相乘来筛选数据。 理解这三个原则,你就能应对90%的数组公式场景。
(条件1)*(条件2) → 相乘。(条件1)+(条件2)>0 → 先相加再判断是否大于0。SUMPRODUCT(条件数组, 求和数组)。数组公式是WPS表格从"基础操作"到"高级数据处理"的重要分水岭。
掌握了SUMPRODUCT的多条件求和,你就不再需要为每个条件组合创建一条SUMIFS、不再需要辅助列来分步求和。掌握了INDEX+MATCH的多条件查找,VLOOKUP的"向左查找""多条件查找"的局限就不再是问题。掌握了数组方式的条件统计,你就可以用一条公式代替COUNTIF+辅助列的复杂操作。
一条数组公式,浓缩了"条件判断 + 数组运算 + 结果汇总"的全过程——这正是"一个公式完成一项完整的数据分析任务"的含义。
没有相关标签