WPS表格数组公式——一键完成多条件求和、查找与统计

发布日期:2026-06-11   浏览次数:2

你曾经遇到过这样的情况吗?

需要统计"华东地区、2026年6月、销售额大于5000元"的订单总金额——条件有三个,跨越四列数据。使用SUMIFS可以做到,但条件表达式的灵活性有限。需要根据"产品编号"在数据表中查找对应的"产品名称"和"单价",但VLOOKUP只能返回单列数据,要返回两列需要写两个公式。需要计算"所有产品中,销售额超过平均销售额的产品数量"——需要先用AVERAGE算平均值,再统计超过该值的记录数,这通常需要两个步骤。

在遇到"多条件、跨多列、需要中间计算"的复杂场景时,普通函数往往力不从心——要么需要添加多条辅助列,要么需要多个公式嵌套,要么根本无法用单个函数直接实现。

WPS表格的数组公式,正是为解决这类问题而生的。数组公式允许你在一个公式中同时对一组数据(而不是单个单元格)执行计算,并返回单个结果或多个结果。你可以用一条数组公式替代3~5条辅助列公式,让整个工作簿更简洁、更高效。

本文将从数组公式的基本概念开始,系统讲解多条件求和(SUMPRODUCT)、多条件查找(INDEX+MATCH数组版)、条件统计(SUM+IF数组)、以及数组常量和高级组合技,帮助你掌握这个"表格高手"必备的技能。


一、什么是数组公式

1.1 数组的基本概念

在WPS表格中,数组就是一组数据的有序集合。它可以是一行数据(水平数组)、一列数据(垂直数组),或者一个矩形区域(二维数组)。

普通公式操作的是单个单元格:=A1+B1——只有一个输入,一个输出。

数组公式操作的是多个单元格:=A1:A10+B1:B10——A1到A10的每个值与B1到B10的对应值相加,生成10个中间结果。这些中间结果可以进一步被处理,如求和、求平均等。

1.2 数组公式的输入方式

在WPS表格中,输入数组公式后,不能直接按Enter确认。必须按 Ctrl+Shift+Enter(三键组合)来确认输入。

按下Ctrl+Shift+Enter后,公式会被自动包裹在花括号{}中:

{=SUM(A1:A10*B1:B10)}

花括号是WPS自动添加的,不要手动输入。如果不小心删除了花括号,公式就以普通公式的方式运行,结果往往是错误的。

注意: WPS的新版本中,部分数组函数(如SUMPRODUCT)已经支持直接按Enter确认,但更建议在输入任何数组公式时都使用Ctrl+Shift+Enter,以确保兼容性。

1.3 数组公式与普通公式的区别

特性普通公式数组公式
操作对象单个单元格或单一区域多个单元格的数组
中间结果不产生中间数组产生中间数组再汇总
确认方式EnterCtrl+Shift+Enter
花括号自动添加,不可手动输入
计算速度中等(数据量大时较慢)

二、SUMPRODUCT函数:多条件求和的利器

2.1 SUMPRODUCT的基本原理

SUMPRODUCT是WPS表格中"最实用"的数组函数之一。它的名字已经说明了它的功能:SUM(求和)+ PRODUCT(乘积)——将数组中对应的元素相乘,然后再求和。

语法:

=SUMPRODUCT(数组1, 数组2, [数组3], ...)

示例: 计算所有产品的总销售额(数量×单价):

=SUMPRODUCT(C2:C100, D2:D100)
  • C2:C100 = 销售数量
  • D2:D100 = 单价

本质上等同于=C2*D2 + C3*D3 + ... + C100*D100

2.2 用SUMPRODUCT实现多条件求和

SUMPRODUCT的真正威力在于条件求和——用一个公式完成"多条件"的筛选和汇总。

需求: 统计"华东地区、A产品、2026年6月"的销售额总和。

数据列:A列(地区)、B列(产品)、C列(日期)、D列(销售额)。

=SUMPRODUCT((A2:A100="华东") * (B2:B100="A产品") * (MONTH(C2:C100)=6) * (YEAR(C2:C100)=2026), D2:D100)

工作原理:

  • (A2:A100="华东"):判断地区是否为华东——结果为TRUE或FALSE的数组。
  • (B2:B100="A产品"):判断产品是否为A产品。
  • (MONTH(C2:C100)=6)*(YEAR(C2:C100)=2026):判断月份是否为6月且年份为2026。
  • 三个条件数组相乘:TRUE=1、FALSE=0。只有当所有条件同时为TRUE时(111=1),结果为1;只要有一个条件不满足(如011=0),结果为0。
  • SUMPRODUCT将条件结果与销售额相乘并求和——只有符合条件的行(条件结果为1)参与求和。

与SUMIFS的对比:

同样的需求用SUMIFS写:

=SUMIFS(D2:D100, A2:A100, "华东", B2:B100, "A产品", C2:C100, ">=2026/6/1", C2:C100, "<=2026/6/30")

两种实现方式。SUMPRODUCT的优势在于条件可以更灵活(如使用MONTH函数对日期运算),且适用于复杂的逻辑组合(如OR条件)。

2.3 多条件计数

如果需要统计符合条件的记录数量(而非求和),可以把SUMPRODUCT当作多条件COUNTIFS来用:

=SUMPRODUCT((A2:A100="华东") * (B2:B100="A产品"))
  • 统计"华东地区、A产品"的订单数量。

2.4 多条件平均值

=SUMPRODUCT((A2:A100="华东") * (B2:B100="A产品"), D2:D100) / SUMPRODUCT((A2:A100="华东") * (B2:B100="A产品"))
  • 分子:符合条件的销售额总和。
  • 分母:符合条件的记录数量。
  • 结果:符合条件的平均销售额。

三、多条件查找

3.1 INDEX+MATCH的数组组合

VLOOKUP的局限性在于:只能从"第一列"查找,且返回右侧列的数据。使用INDEX+MATCH的数组组合,可以实现更灵活的多条件查找。

需求: 根据"产品编号"和"仓库编码"两个条件,查找对应的"库存数量"(数据在A列=产品编号、B列=仓库编码、C列=库存数量)。

=INDEX(C2:C100, MATCH(1, (A2:A100="P001") * (B2:B100="WH01"), 0))

这个公式使用了数组运算:

  • (A2:A100="P001") * (B2:B100="WH01"):两个条件相乘,生成一个0和1的数组——只有两个条件同时满足的行对应的值为1,其余行为0。
  • MATCH(1, ..., 0):查找数组中第一个1出现的位置(即两个条件同时满足的第1行)。
  • INDEX(C2:C100, ...):返回对应行的库存数量。

注意: 这个公式是数组公式,需要按 Ctrl+Shift+Enter 确认。

3.2 多条件精确查找多个字段

如果需要根据同一个条件���找并返回"产品名称"和"单价"两个字段:

  • 产品名称:=INDEX(B2:B100, MATCH(E2, A2:A100, 0))(E2是查找值单元格)。
  • 单价:=INDEX(C2:C100, MATCH(E2, A2:A100, 0))

两条公式,但结构清晰:都是先定位行位置,再取该行的指定列。

3.3 使用数组公式实现VLOOKUP反向查找

VLOOKUP只能从查找列"向右"查找。如果需要根据"产品名称"查找"产品编号"(编号在名称的左边),普通VLOOKUP做不到。

使用INDEX+MATCH的数组方案:

=INDEX(A2:A100, MATCH("产品X", B2:B100, 0))
  • 在B列查找"产品X"的位置,返回A列对应的值——实现了"向左查找"。

四、数组条件统计

4.1 统计超过平均值的记录数

需求: 统计销售额超过平均销售额的订单数量。

=SUM((D2:D100 > AVERAGE(D2:D100)) * 1)
  • D2:D100 > AVERAGE(D2:D100):判断每个销售额是否超过平均值——TRUE/FALSE数组。
  • *1:将TRUE/FALSE转为1/0。
  • SUM:统计1的总数,即超过平均值的记录数量。

这是数组公式,需要使用Ctrl+Shift+Enter确认。

4.2 统计同时满足多个OR条件的记录数

需求: 统计华东地区华南地区的订单数量(满足任意一个条件就算)。

=SUM(((A2:A100="华东") + (A2:A100="华南")) > 0)
  • (A2:A100="华东") + (A2:A100="华南"):如果同一行同时为华东和华南(不可能),结果是2;如果满足其中一个,结果是1;如果都不满足,结果是0。
  • >0:将结果转为TRUE/FALSE。
  • 按Ctrl+Shift+Enter确认。

4.3 最大/最小值条件统计

需求: 找出华东地区的最高销售额。

=MAX((A2:A100="华东") * (D2:D100))
  • 符合条件的行:销售额乘以1,保留原值。
  • 不符合条件的行:销售额乘以0,结果为0。
  • MAX返回非零的最大值——即符合条件的最高销售额。

同样是数组公式,必须三键确认。


五、数组公式的高级技巧

5.1 数组常量

数组常量允许你在公式中直接"写出"一个数组,而不需要引用单元格区域:

={1,2,3,4,5}
  • 水平数组(一行五列)。
={1;2;3;4;5}
  • 垂直数组(五行一列,分号表示换行)。

应用: 加权评分计算——假设权重为30%、30%、40%,三列数据分别为B、C、D列:

=SUMPRODUCT(B2:D2, {0.3, 0.3, 0.4})

计算B20.3 + C20.3 + D2*0.4 的加权总分。

5.2 TRANSPOSE函数:行列转置

如果有一个水平数组(一行多列),需要将其作为垂直数组(多行一列)参与计算,可以使用TRANSPOSE函数:

=SUMPRODUCT(A1:A10, TRANSPOSE(B1:J1))
  • 将B1:J1的10列水平数组转置为10行垂直数组,然后与A1:A10进行SUMPRODUCT计算。

六、实战案例

6.1 案例一:复杂条件的销售汇总

数据表: A列=销售日期、B列=地区、C列=产品、D列=销售额、E列=销售数量。

需求: 统计2026年上半年、华东或华南地区、A产品B产品的总销售额。

=SUMPRODUCT(
 (YEAR(A2:A100)=2026) * (MONTH(A2:A100)<=6) *
 ((B2:B100="华东") + (B2:B100="华南") > 0) *
 ((C2:C100="A产品") + (C2:C100="B产品") > 0),
 D2:D100
)

一条公式完成了"年份、月份、地区多选、产品多选的交叉条件筛选"的汇总需求。如果使用普通方法,可能需要添加辅助列、多个公式分步计算——而数组公式一步到位。

6.2 案例二:员工绩效评分

数据表: A列=员工姓名、B列=出勤率、C列=业绩评分、D列=360评价。

需求: 计算每位员工的加权绩效总分(出勤率×20%+业绩评分×50%+360评价×30%)。

=SUMPRODUCT(B2:D2, {0.2, 0.5, 0.3})
  • 一条公式拉出整列,轻松完成差异化加权。

6.3 案例三:一次性统计多个维度的指标

需求: 在一个单元格中同时计算出3个指标:总客户数、平均消费额、最高消费额。

可以把三个公式写在同一行,分别占用三个单元格。或者用一个组合数组公式返回三个结果(Ctrl+Shift+Enter确认):

选中三个水平相邻的单元格(如F1、G1、H1),输入:

{=COUNT(A2:A100), AVERAGE(A2:A100), MAX(A2:A100)}

不过需要注意:这种"多单元格数组公式"在编辑时不太方便,不如分别写在三个单元格中直观。更推荐将三个公式分开放置,每个公式专注于一个指标的计算。


七、数组公式的性能与局限

7.1 计算速度

数组公式在工作表每次重新计算时,会对数组中的每个元素执行计算。如果数组很大(如10000行),且公式中包含多层条件运算,计算速度会明显变慢。

  • 小数据量(1000行以内): 数组公式与普通公式的速度差别可以忽略。
  • 中等数据量(1000~10000行): 数组公式的计算时间在几秒内——可以接受。
  • 大数据量(10000行以上): 建议评估是否使用数组公式,或使用辅助列部分预计算。

7.2 与辅助列的对比

数组公式的主要优势在于"一个公式替代多个辅助列"——减少工作表的复杂度,降低出错概率。但辅助列的优势在于"计算过程可视化,便于检查"。

建议:对于复杂逻辑的计算,先用辅助列搭建逻辑并验证结果正确性;逻辑确定后,再将辅助列合并为一条数组公式。这种方法既保留了开发阶段的"可验证性",又获得了最终版本的"简洁性"。

7.3 数组公式的编辑

编辑数组公式时,需要选中包含公式的单元格(如果是多单元格数组公式,需选中整个数组区域),按F2进入编辑模式,修改后按Ctrl+Shift+Enter确认。

不能单独编辑数组公式区域中的某个单元格——WPS会提示"不能更改数组的某一部分"。需要先选中整个数组区域(如果公式是单单元格数组公式,直接编辑即可)。


八、常见问题

8.1 数组公式显示#VALUE!错误

  • 最常见的原因:没有按Ctrl+Shift+Enter确认。即使公式看起来正确,如果没有三键确认,WPS可能将其作为普通公式处理,导致数组运算返回#VALUE!。
  • 检查数组的维度是否一致。例如,A1:A10*B1:B9的维度不一致(10行vs9行),会返回错误。
  • 检查公式中是否包含了不兼容数组运算的函数。

8.2 数组公式结果与预期不符

  • 逐段检查:将数组公式拆开为多个辅助列,分别验证每个条件的结果是否正确。
  • 使用F9键:在公式编辑栏中选中一段表达式(如(A2:A100="华东")),按F9查看这段表达式的计算结果——应该看到一组TRUE/FALSE值。
  • 确认未删除花括号:Ctrl+Shift+Enter添加的{}如果被误删,公式可能仍会运行但结果错误。

8.3 数组公式无法在合并单元格中使用

合并单元格与数组公式的兼容性较差。如果需要在合并单元格中使用数组公式,建议取消合并单元格,或将合并区域中的公式分别处理。

8.4 文件打开速度变慢

如果文件中包含大量大型数组公式,每次打开文件都需要重新计算所有数组,导致打开速度变慢。

  • 将不再需要变化的数组公式计算结果"粘贴为数值"——锁定为静态数据。
  • 将计算选项设置为"手动计算"——仅在需要时按F9触发重新计算。

九、从入门到精通

9.1 掌握顺序

  • 第一步: 掌握SUMPRODUCT的多条件求和——这是最常用、最实用的数组公式场景。能从"需要多条SUMIFS"转变为一个SUMPRODUCT搞定。
  • 第二步: 掌握INDEX+MATCH的多条件查找——理解条件数组相乘的原理。能用一条公式代替VLOOKUP+辅助列的组合。
  • 第三步: 掌握数组方式的条件统计——SUM+IF组合统计超过平均值的记录数、多条件最大值/最小值等。能够灵活应对各种"统计类"需求。

9.2 核心原则

数组公式的核心理念是:用乘法表示AND条件、用加法表示OR条件、将条件结果与数据相乘来筛选数据。 理解这三个原则,你就能应对90%的数组公式场景。

  • AND条件(多个条件同时满足):(条件1)*(条件2) → 相乘。
  • OR条件(满足任一条件):(条件1)+(条件2)>0 → 先相加再判断是否大于0。
  • 求和:SUMPRODUCT(条件数组, 求和数组)

结语

数组公式是WPS表格从"基础操作"到"高级数据处理"的重要分水岭。

掌握了SUMPRODUCT的多条件求和,你就不再需要为每个条件组合创建一条SUMIFS、不再需要辅助列来分步求和。掌握了INDEX+MATCH的多条件查找,VLOOKUP的"向左查找""多条件查找"的局限就不再是问题。掌握了数组方式的条件统计,你就可以用一条公式代替COUNTIF+辅助列的复杂操作。

一条数组公式,浓缩了"条件判断 + 数组运算 + 结果汇总"的全过程——这正是"一个公式完成一项完整的数据分析任务"的含义。


本文相关标签

没有相关标签