动态数组大概是 WPS 表格这几年最安静的一次升级。它没改界面,没加按钮,只是让一个公式能一次吐出多个结果、自动铺到旁边的格子里。用过之后,那些「先框选区域、再按三键」的老习惯,就再也回不去了。

这篇把动态数组和数据透视表放在一起讲:前者让公式从一格变成一片,后者让汇总从手工拖拽变成自动刷新。中间会说清 WPS 的支持脉络、溢出失败时该怎么救,最后把两者串成一条从原始数据到看板的流水线。

信息核验时点: 2026-10-16。WPS 官网 Windows 下载页当前列出的正式版是 32 位 12.1.0.29161、64 位 12.1.0.29158(Mac 12.1.29181、Linux 12.1.2.29183);动态数组在 WPS 桌面版已落地约三年,具体版本节点见下文


本文要点
  • 一句话定义:动态数组是一种计算机制,允许一个公式返回多个结果,并自动溢出填充到相邻空白单元格,取代了老版本必须先框选区域再按 Ctrl + Shift + Enter 的写法。
  • 核心结论:WPS 表格的动态数组不是 2024 年才有,2023 年 9 月官方已开灰度、11 月的体验版 15933 首次向所有人开放,官网正式版随后跟进到 15990;同期上线 TEXTSPLIT 等文本函数,接着 16120 版一次补进 DROP、TAKE、EXPAND、TOCOL、TOROW、VSTACK、HSTACK 等 11 个数组函数。写一次算一次,比逐格铺公式能省下大量重复运算。
  • 适用场景:从流水明细里动态提取不重复名单、按条件整片筛选数据、多张结构相同的表纵向合并、按维度分组后自动汇总,以及给数据透视表准备一张能自动扩展的源表。
  • 短板 / 边界:老版本 WPS 与 Excel 2019 及更早版本都不支持,只能退回三键数组公式;溢出区域必须留空、不能含合并单元格、不能位于超级表里;RAND 这类随机函数的结果无法溢出;在多人协作、模板分发的场景里,版本不一致仍是最常见的翻车原因。

入门:动态数组到底解决了什么问题?

一次公式出多个结果,机制是什么?

传统写法里,一个格子只能装一个值。数组公式一次算出很多值,却无处安放,只能靠两种办法消化:要么先选中一整片区域,再按 Ctrl + Shift + Enter,让结果挤进去;要么在最外层套一层 INDEX,用行号列号把结果一个一个取出来,公式写得没人看得懂。

动态数组做的事很朴素:允许一个公式的多个结果,按顺序铺到相邻的空格里。写一次,算一次,结果自己占好位置。数据行数变了,铺开的范围也跟着变,不用你提前框区域。

举个最直观的对比。要从一张明细表里筛出某班的全部行:

老写法得先框好结果区域,再填这条:

=IFERROR(INDEX(FILTER($A$2:$D$10,$A$2:$A$10="二班"),ROW(A1),COLUMN(A1)),"")

新写法只要在一个格子里写:

=FILTER(A2:D10,A2:A10="二班","查无")

前者的毛病不只是长。它还要提前猜结果会有几行几列,猜少了显示不全,猜多了满屏错误值;数据一增,还得回头调区域。后者把这件事交给了软件自己判断。

不按三键之后,工作方式变了什么?

变化不只是「少按两个键」,而是整个思路的转向。

从「每一格都算一遍」变成「算一次、写一片」。 老办法下,同一段数组运算会在结果区域的每个格子里各跑一遍,几百个格子就是几百次重复计算,表格卡顿多数出在这儿。动态数组只在左上角那个格子算一次,其余位置是把结果写过去,不重复运算。

从「提前定好区域」变成「按结果自适应」。 这是最省心的一点。你不用再预估「大概会有多少条」,也就不会出现「预留了二十行,实际来了三十条」这种尴尬。

从「外层套一堆取值函数」变成「一条公式直达结果」。 过去那种 INDEX 配 ROW、COLUMN 的层层包裹,现在基本可以退休了。

想理解得更透,WPS 社区有篇把原理和效率差异讲得很清楚的长文,见 动态数组功能到底有多牛。

三个必须记住的符号

动态数组的用法里,有三处符号最容易记混,也最影响实际使用。

第一个是 #,用来引用整片溢出区域。 如果 FILTER 的结果从 F2 开始向下铺开,那么 =SUM(F2#) 算的就是这一整片结果的和,而且结果行数变了,求和范围会自己跟着变。这比手工写 F2:F20 稳得多。

第二个是 @,用来只取第一个值。 在公式前加一个 @,就表示「我只要结果里的第一个」。当一片溢出结果只需要一个值参与后续计算时,用它;不加的话,后续计算会按整片结果展开,结果可能不是你想要的。

第三个是 &,用来拼组合键。 多条件匹配时,把几个条件用 & 连成一根字符串,就成了一把能对上的钥匙。这个符号本身不算新,但在动态数组的语境下用得比以前频繁得多。

WPS 里到底能不能用动态数组?

答案是能,而且从 2023 年就开始了

流传比较广的说法是「WPS 2024 之后才支持动态数组」,这个时间点其实偏晚了。

按 WPS 社区的记录,动态数组是 2023 年秋天在 WPS 里落地的。官方认证账号「WPS 社区小助手」在 2023 年 9 月 12 日发布了 《【灰度测试】动态数组表格玩家招募令》,开始面向玩家灰度;同年 11 月 9 日,社区资深用户(WPS KVP 达人张俊)发帖介绍了 社区专属体验版 15933,这是首个向所有人开放体验的动态数组版本,同一版本还一并补上了 TEXTSPLIT、TEXTAFTER、TEXTBEFORE 三个文本拆分函数。随后官网正式版跟进到 15990——这一点有金山办公官方的 WPS 学堂在 《SPILL 错误提示及处理》(2023-12-07)里一句「更新了官网 15990 版本后……表格动态数组上线后」可以佐证。至于网上流传的「WPS 表格动态数组时隔两年更新」,出处只是自媒体转载稿,「两年」这个间隔既没有官方口径,也和 Excel 自己在 2018 年就推出动态数组的事实对不上,不必采信。

到 2023 年 12 月的 16120 版本,数组函数又一次性补进 11 个,包括 DROP、TAKE、EXPAND、CHOOSECOLS、CHOOSEROWS、WRAPCOLS、WRAPROWS、TOCOL、TOROW、VSTACK、HSTACK,清单见 动态数组版本(16120)并新增 11 个数组函数。

所以准确的说法是:动态数组在 WPS 里已经落地三年左右,桌面版的支持比较完整;纯网页端的在线表格和移动端的情况与桌面版并不一致,需要在移动端或网页上做数组运算时,官方给的建议仍然是用桌面版打开。

另一个常被拿来做卖点的说法是「WPS 的动态数组完全免费,Excel 要订阅才行」。这话方向没错,但得说准:微软官方口径里,动态数组适用于 Microsoft 365、Excel 2021 与 Excel 2024(含 Mac 版),Excel 2019 及更早确实没有;WPS 这边,动态数组随官网下载的较新版本一起发,普通用户更新到新版就能用。至于「不额外收费」,官方并没有单独发过一条「动态数组免费」的公告,能查实的是灰度包免费申请、15990 起经官网正常下载就能获得——所以更稳妥的表述是「不用为它单独付费,但前提是你的版本够新」,别把它当成一个可以承诺的独立免费权益。

为什么你写的 UNIQUE 只返回一个值?

这是最典型的版本症状。

如果你的公式在一个格子里出了正确结果,旁边却什么都没铺开,那就是当前版本不支持自动溢出。 处理办法有两条。

一条是退到老写法:先框选好结果要落的整片区域,输入公式后再按 Ctrl + Shift + Enter 以数组公式的形式确认。WPS 学堂早期那篇 使用 UNIQUE 函数去除重复项 就是这么教的,它的开头写着一句提示——此函数需更新至最新版本使用。这句话放在今天依然适用。

另一条更省事:升级到最新版。动态数组已经是 WPS 表格的常规能力,没有理由留在老版本上手动按三键。

顺便说一个相关的错位:很多人把「版本新」和「函数全」当成一回事。实际上两者不同步。桌面版有、网页版没有,Windows 版有、某些平台版本滞后,都是常态。判断办法很土但很准:在任意单元格敲 =FILTER(,如果弹出参数提示,就说明可用;连提示都不出现,就别再折腾了。

溢出失败时,#SPILL! 在说什么?

#SPILL! 是动态数组特有的错误,意思是「结果要铺开的地方,我铺不下去」。它不报错在公式本身,而是报错在落点。

按 WPS 学堂的归纳,常见原因有六种,处理方式各不相同:

报错原因具体情形怎么解决
溢出区域不是空白区域落点上有别的数据,哪怕只有一个单元格有值点黄色叹号选「造成阻碍的单元格」,按 Delete 清掉
无法溢出,计算方式为手动表格设成了手动重算,结果不会自动铺开到「公式」里点重算工作簿,或改成自动计算
溢出区域太大结果超过表格最大行数 1048576 行缩小生成范围,别用整列引用去生成序列
溢出区域位置未知公式含 RAND、RANDBETWEEN、RANDARRAY 这类随机(易变)函数这类函数每次重算结果都可能变,软件无法确定该铺开多大,所以不溢出;改用固定取值或算好后转数值
溢出区域位于表中公式写在超级表范围内把超级表转成普通区域,或把公式挪到普通区域
溢出区域包含合并单元格落点里有合并单元格取消合并后再写公式

这份清单和排查过程,WPS 社区那篇 SPILL 错误提示及处理 写得最全,配了每种情形对应的截图。

这里有两处最容易踩。一是「空白区域」的标准比想象中严:落点上哪怕有个不起眼的空格、有个被设过格式的空格,一样会挡。二是手动重算这个坑:有人为了省机器资源把计算设成手动,结果所有动态数组公式一起罢工,还以为是公式写错了。

进阶:七个溢出函数,各管一段活

UNIQUE:把去重从操作变成公式

「删除重复项」这个按钮大家都用过,它的问题是:一次性加工,破坏性操作,数据一更新就得重来一遍。

UNIQUE 把这件事换了个方向。它不改原数据,只是把不重复的内容「摘」出来放在一边,源数据一变,结果立刻跟着变。

=UNIQUE(A2:A100)

它有三个参数,后两个可选。第一参数是待去重的区域,别用整列引用,把范围收窄到实际数据,否则会把空白也算进去。第二参数控制比较方向,省略或填 FALSE 是按行比较,填 TRUE 是按列比较。第三参数填 TRUE 时,只返回恰好出现过一次的值,而不是「所有不重复的值」——这两个含义差得很远,一个是去掉多余的,一个是只留唯一的。

多列去重时还有个规则要记:区域选两列,去重逻辑是把「同一行的两列组合」当成一个整体,两列都相同才算重复。所以区域内每一行的值都各自不重复。

WPS 社区有一篇专门讲 UNIQUE 多场景应用的文章,从算奖状张数到中式排名都做了演示,见 动态数组行业案例:使用 UNIQUE 函数。

FILTER:把符合条件的行整片捞出来

如果说 UNIQUE 解决的是「有多少种」,FILTER 解决的就是「有哪些」。

=FILTER(A2:D100, C2:C100="华东", "无匹配记录")

三个参数:数据区域、条件、找不到时显示什么。第三个参数不填的话,没有匹配结果时会直接抛 #CALC!;填上就安静地显示一句提示。

它的价值在于结果可多可少。数据里有五条符合就铺五行,有五十条就铺五十行,你不用提前做任何准备。

几个实用写法值得记一下。条件是数值比较时,写成 FILTER(A2:D100, D2:D100>5000);要多个条件同时满足,用乘号连接逻辑判断;要让结果按某列排序,外面套一层 SORT 即可。

SORT、SORTBY、TAKE、DROP:排序和取舍

这四个函数经常一起出现,各管一段。

SORT 按某一列的值排序,=SORT(A2:D100, 4, -1) 表示按第 4 列降序排。

SORTBY 的用法更灵活,它把「要排的数据」和「按什么排」分成两个参数,所以可以按一个不在结果里的列排序,也可以设置多个排序依据。

TAKE 取前 n 行或后 n 行,=TAKE(SORT(A2:D100,4,-1),5) 就是「按销售额降序排完,取前五名」,一句顶过去的三步操作。

DROP 反过来,去掉前 n 行或后 n 行。做报表时常见的需求是「去掉表头和合计行」,用它比手工改区域干净。

VSTACK 与 HSTACK:把多张表拼成一张

这两个函数是 16120 版本一起补进来的,用途非常明确。

VSTACK 纵向拼,适合把结构相同的多张表摞在一起:

=VSTACK(一月!A2:F100, 二月!A2:F100, 三月!A2:F100)

HSTACK 横向拼,适合把并排的几段数据接成一张宽表。

它们和合并计算、复制粘贴的区别在哪?在于动态。源表增加行,拼出来的结果跟着变;源表某列改了一位,结果立刻同步。做月度汇总时,这条公式写一次就不用管了。

TOCOL 与 TOROW:把二维拍平成一维

数据有时候是散着放的:一张表里,每个项目占一行,参赛者的名字横向铺在好几列里。这种「宽表」没法直接计数,也没法直接去重。

TOCOL 就是干这个的:把一整片二维区域,按指定的方向压成一列。它的第二参数可以控制是否忽略空单元格和错误值,第二参数填 3 表示两者都忽略;第三参数控制读取方向,默认先按行读,填 1 则改为先按列读。

有了它,「统计一共有多少人参赛」这种需求就变得很直白:

=COUNTA(UNIQUE(TOCOL(C3:K9,3)))

先把名字铺开成一列、忽略空格子,再去掉重复的,最后数个数。TOROW 是同一件事的横向版本。

TEXTSPLIT 与 TEXTJOIN:拆开和粘合

TEXTSPLIT 把一格里的长文本按分隔符拆成多格。系统导出的「省市区」挤在一格、用斜杠或短横连着的数据,用它一条公式就能拆开,不用跑分列向导。

TEXTJOIN 反过来,把一片内容用指定分隔符接成一段文字。做清单、拼地址、把多行备注合成一行时都能用。

这两个函数一个是拆、一个是合,实际工作中经常成对出现:先 TEXTSPLIT 拆开成列,处理完再用 TEXTJOIN 合回去。

数据透视表:另一个自动化入口

透视表和动态数组,到底该用哪一个?

这是被问得最多的一类问题,其实两者的分工很清楚。

要「按维度分组统计」,用透视表。 比如「各区域各品类的销售额合计」「每个部门每个月的报销总额」。这类需求的共同点是:你要的是汇总数,而且维度会换来换去。透视表的拖拽式操作,天生就是为这种场景准备的。

要「按条件挑出具体的行」,用动态数组。 比如「把华东区金额大于 5000 的订单全部列出来」「把这张流水里的客户名单去重」。这类需求要的是明细,不是汇总,用 FILTER 一条公式就够。如果你要的只是「按一个键取回对应的某个值」,那更该用查找函数——VLOOKUP 到 XLOOKUP 的写法见 WPS 查找函数实战:从 VLOOKUP 到 XLOOKUP。

一个简单判断:结果是要「一个数」还是要「一片行」。要数是透视表,要行是动态数组。

两件事都要做时,顺序通常是:先用动态数组把源数据整理干净,再喂给透视表汇总。这个组合是本文后面案例的核心。

源数据要满足哪四条?

透视表在拖字段之前,对源数据有硬性要求。四条不满足,出问题九成出在这里。

每列有唯一标题。 表头不能有重名,不能是空白,也不能合并成两行。合并表头会直接破坏字段识别。

没有合并单元格。 数据区里出现合并单元格,后续所有自动识别都会在这里断掉。

没有整行空白。 数据中间有空行,透视表会把它当成数据边界,后面的内容被切掉。

同一列数据类型一致。 一列里大部分是数字、夹着几个文本型数字,汇总时会被漏掉;一列日期里夹着几个文本格式的日期,分组功能就不认。

另外两条建议:一张工作表只放一张源表,别把好几张表挤在同一页靠空行隔断;表头保持单行,视觉上再复杂的标题也放在数据区之外。

还有一个能省很多事的习惯:把源数据按 Ctrl + T 转成超级表。超级表的数据范围会随着新增行自动扩展,后面刷新透视表就不用反复改数据源了。

四个区域各管什么?

右侧字段列表里有四个筐,字段拖进去的含义完全不同。

区域管什么一般放哪类字段
行按什么分类,每一行是一个分类项产品、部门、地区、客户
列在行分类的基础上再横向交叉年份、季度、指标类型
值要汇总什么数据金额、数量、订单数
筛选整体过滤,只看部分数据业务员、大区、是否完成

几个高频细节。值区域默认对数字求和、对文本计数,点值字段旁的箭头进值字段设置,可以换成计数、平均、最大、最小;想看占比,在值显示方式里选总计的百分比;日期字段拖到行区域后默认按天展开,右键选「创建组」能按月、季度或年归并。

要在透视表内部做「单价乘数量」这类计算,用分析选项卡里的计算字段。注意它的公式只能引用透视表里已有的字段,不能引用单元格地址,这一点和普通公式不一样。

除了手工搭透视表,WPS 官网还有一个 WPS AI 表格功能说明页,讲的是用自然语言让 AI 直接生成公式、透视表和图表(例如「按地区统计销售额降序排列」)。这项能力以当前版本为准,且该说明页本身是官网的 AI 生成内容,AI 有可能认错列名、写错条件或编造结论,生成后一定要回到源数据核对,不能直接采信。

刷新之后数字全变了,问题出在哪?

刷新本来是为了让数据更新,结果却把格式和口径一起弄乱了,这类困扰非常常见。原因通常是三处。

第一处,值字段的汇总方式被重置。 你把某个字段改成了「平均值」,刷新之后又变回「求和」。这是透视表在重建内部结构时的默认行为,处理办法是在透视表选项里勾上「更新时保留单元格格式」,能减少一部分返工;但汇总方式是跟着字段定义走的,涉及多处自定义时,最好把设置记下来。

第二处,数据源范围没跟着变。 源表新增了行,但透视表还在读老范围,结果自然少了。这正是前面建议把源表转成超级表的原因——超级表会自己扩展范围。没转的话,就得回分析里点「更改数据源」重新框选。

第三处,口径本身对不上。 比如一部分数据是含税的,一部分不含税;或者一部分日期是文本格式,被排除在分组之外。这类问题不在透视表,在源数据,得回去清洗。

顺带说一句刷新方式:改完源数据按 Alt + F5 刷新当前表;有多个透视表时,用「全部刷新」更省事。

切片器和日程表,让筛选变成点按钮

切片器是透视表配套的筛选控件,做成一个个按钮摆在表旁边,点一下就筛选,比在字段下拉菜单里勾选直观得多。而且一个切片器可以同时控制多个透视表,做看板时特别有用。

日程表是时间维度的切片器,可以按年、季度、月、日四个层级拖动浏览,做趋势分析时比下拉筛选快。

用它们的场合很明确:这张表要给别人看、别人还要自己动手筛。如果只是自己偶尔查一下,字段下拉就够了。

高级:把两者串成一条流水线

光会单个功能,威力有限。真正的效率提升来自把它们串起来。下面三个案例由浅到深。

案例一:动态去重的客户名单

需求。 一张销售流水表,A 列是客户名,同一客户会出现多次,需要随时拿到一份不重复的客户名单,供后续做下拉选择或统计。

做法。 在一个空单元格里写:

=SORT(UNIQUE(FILTER(A2:A1000, A2:A1000<>"")))

这行公式做了三件事:FILTER 先把空白排掉,UNIQUE 去重,SORT 按拼音排好序。源表新增客户,名单自动多一行;删掉一个客户,名单自动少一行。

接着往下用。 把这份名单作为数据验证的选项来源时,可以直接引用溢出区域,比如 =$D$2#,名单变长变短,下拉选项跟着变,不用回去改验证设置。

一个要注意的地方。 只有当数据源本身是「流水明细」这种形态时,这个组合才有意义。如果只是偶尔清一次名单,用「删除重复项」按钮反而更快——工具要配场景,别为了用而用。

案例二:跨表合并后直接透视

需求。 一到十二月的明细分散在十二张工作表里,结构完全一样,需要按月份和区域做一张汇总表。

做法分两步。 第一步,先建一张汇总表,用一个 VSTACK 把十二个月的头尾连起来(下面以三个月示意):

=VSTACK(一月!A2:F1000, 二月!A2:F1000, 三月!A2:F1000)

第二步,把这行公式的结构交给透视表。做法是把 VSTACK 的结果落到一张空表上,再以这张表为源做透视;或者更彻底一点,用 WPS 自带的取数与清洗工具(「数据」选项卡下的获取数据 / WPS Query 编辑器,Excel 那边对应的就是 Power Query)把多张表合并成一张查询表,再由它出透视。

为什么值得这么麻烦。 因为这套结构是「活」的。下个月多出一张新表、某张表多出几十行,结果都会重新计算,不用再把十二张表一个个打开复制。做完一次,以后每月只要刷新。

一个实际提醒。 VSTACK 要求各张表的列结构一致,列顺序也要对齐。如果某一月多了或少了一列,拼出来就会错位。动手之前先把十二张表的表头核对一遍,比事后排查省事。

案例三:一张自动更新的看板

把前面几步叠起来,就是一张能自己更新的看板。

第一层,用动态数组做数据层。 通过 FILTER 把「本月」「本区域」的明细挑出来,源数据一刷新,这一层自动跟着变。

第二层,用透视表做汇总层。 以第一层的输出为源,按维度分组求和,配上切片器做交互筛选。

第三层,用图表做呈现层。 WPS 表格近一版确实补了一批高阶图表,官方更新帖点名可查的有箱型图、瀑布图、旭日图、树状图等,展示分布、成本流转、占比构成时比传统的柱形和饼图更能说明问题;具体到你手上的版本,建议直接看「插入 → 图表」里现列了哪些,别照着某个版本号去数个数——网上那种「某版一口气加了七种图表」的精确计数,多数只出自下载站转述,官方口径一般只到「新增多种图表类型」。

还有一处常被混着说的,得提前给你分开:所谓「WPS 数据工作台(WPS Query)」并不是某一次表格更新里「一键上线」的新按钮,它是数据选项卡下的取数与清洗编辑器(业内叫 ETL / Power Query 那一类),长期灰度放量,你机器上有没有、入口叫什么,得自己去「数据 → 获取数据」确认。而「看板、甘特图、日历」这类视图属于 WPS 多维表格,是另一条产品线,跟前面讲的单元格动态数组、普通工作表里的数据透视表都不是一回事,别把它当成这张表就能用的功能。

第四层,用定时刷新收尾。 让这套流程每天固定时间自己跑一遍,早上打开就是最新数据。

这条路走通之后,你会发现「做报表」这件事的重心变了:不再是每月花一天手工汇总,而是前期花半天把结构搭好,之后每月花几分钟看一眼结果对不对。

函数搞不定的批量活,交给脚本

有些活是表格本身的天花板。手头有几十份格式相同的工作簿要合并汇总,靠公式一个个文件打开复制,一天都做不完。这时候用一段 Python 脚本更划算。想先摸清 Office 与 WPS 各自的编程接口怎么选,可以看这篇横向对比;这里直接用 pandas 演示「读表、透视、导出」的最短路径。

# 先装好数据处理和读写 Excel 的库
pip install pandas openpyxl
import pandas as pd

# 读取源明细表
df = pd.read_excel("销售明细.xlsx", sheet_name="明细")

# 相当于把「区域」拖到行、「月份」拖到列、「金额」拖到值
table = pd.pivot_table(
    df,
    index="区域",
    columns="月份",
    values="金额",
    aggfunc="sum",
    margins=True,
    margins_name="合计",
)

# 导出成新表格,交给 WPS 继续加工和出图
table.to_excel("透视结果.xlsx")

装好库,把文件名换成自己的就能跑。同样的思路还能用来把几十个工作簿拼成一张总表、批量统计每个文件的记录数、按规则重命名工作表。脚本不取代 WPS 表格,它只是在批量场景里替你把体力活接走;日常的看、筛、算,还是表格本身更顺手。

学这两个功能,最容易走进哪几个误区?

第一个,用整列引用图省事。 A:A 看着干净,实际计算范围是一百多万行。动态数组的溢出范围取决于计算结果,用整列去生成序列或去重,很容易撞上「溢出区域太大」,也会让文件明显变卡。把区域限定到实际数据范围,是使用动态数组的第一条纪律。

第二个,把 UNIQUE 当成「删除重复项」的替代品。 两者思路完全不同:按钮是加工动作,函数是持续计算。用哪个取决于你的数据是不是活的。静态数据用按钮更快,天天更新的流水必须用函数,否则你每周都要重来一遍。

第三个,忘了第三参数的两种含义。 UNIQUE 的第三参数是「仅返回恰好出现一次的值」,不是「返回所有不重复的值」。想做一份客户名单,填 TRUE 的话,只买过一次的客户会被留下,买过多次的老客户反而消失了——这个方向正好搞反。

第四个,源数据不整理就上透视表。 合并单元格、两行表头、整行空白、一列里两种数据类型,这些在普通表格里忍一忍也能用,放到透视表里就是直接出错。先清洗再汇总,这个顺序不能倒。

第五个,靠手工记住透视表的设置。 值字段的汇总方式、数字格式、列宽,刷新之后都有可能被重置。要么在透视表选项里勾上保留格式,要么把关键设置写下来。指望每次刷新都原样保留,最后一定会返工。

第六个,只顾自己用得爽,不管别人的版本。 动态数组公式发到老版本 WPS 或 Excel 2019 上,可能整列变成错误值,或者只显示第一个结果。给别人发文件前想一下对方的软件环境;不确定时,最保险的做法是把公式结果转成数值再发。

从入门到熟练,大概要花多久?

按多数人的节奏,可以这样估。

半天:把动态数组的机制弄明白,知道 #、@ 两个符号做什么用,会在新版本上写出一条能自动溢出的公式;同时认清 #SPILL! 的六种原因,遇到报错能自己定位。

一到两天:掌握 UNIQUE 和 FILTER 两个函数,把手上「去重」「按条件挑行」这两类活全部换掉;顺便把 SORT 和 TAKE 配上,做出「排序后取前几名」这类常用组合。

一周左右:学会 VSTACK、TOCOL、TEXTSPLIT 这几个结构调整类函数,能把散在多张表或多列里的数据合成一张规范的源表;同时把透视表的基本操作过一遍,四个区域该放什么都清楚。

长期:真正拉开差距的不是函数数量,而是看数据源的习惯。拿到一份表先判断它是明细还是汇总、有没有唯一键、能不能直接喂给透视表;再决定这一层是用工作表函数,还是交给「获取数据」那套查询编辑器(WPS 与 Excel 用的是同一类 M 语法)。把数据整理、汇总、呈现这三层分清楚,你就会发现同样的活,用时和别人差得不是一点。

最后补一句实在的:动态数组这个功能最大的价值,是让「一次算清楚」变得可行。以前很多看起来复杂的表,是靠几十条公式在几十个格子里各算一遍堆出来的;现在只需要一条公式,把该说清的逻辑说清就够了。下次再碰到重复劳动,先别急着往下拖公式,停下来问一句:这件事能不能一条写完?

发表评论

验证码图片,点击可更换