乐于分享
好东西不私藏

ONLYOFFICE 深度解锁系列.33-用动态数组来优化你的Excel公式

ONLYOFFICE 深度解锁系列.33-用动态数组来优化你的Excel公式

告别手动拖拽!动态数组让你的Excel飞起来

还在手动拉公式拉到手指发酸?还在为Ctrl+Shift+Enter那套古老操作挠头?是时候认识一下动态数组了——一个公式,自动填满,数据变了它也跟着变,让Excel自己动起来。

什么是动态数组?

简单说,动态数组就是一个公式生成一串结果,然后自动“溢出”到旁边的一堆单元格里。就像往水里扔颗石子,波纹会自动扩散开去。

在动态数组出现之前,要在多个单元格显示计算结果,要么手动把公式拖拽几百行,要么用那种老掉牙的CSE数组公式(按Ctrl+Shift+Enter输入的那种)。传统CSE数组公式的输出范围是固定的,数据多了不会自动扩,数据少了也不会自动缩,特别死板。

动态数组的出现彻底改写了这一规则。你只需在左上角单元格输入公式并敲下Enter,Excel就会自动把结果填满——数据增加时,溢出范围自动扩大;数据减少时,它也跟着缩小。

举个最直观的例子:在A2单元格输入下面这个公式,然后敲Enter:

text

=SORT(UNIQUE(A2:A100))

只需这一下,一个已排序且去重后的列表就会自动生成在对应区域——无需CSE组合键,也无需任何辅助列。

动态数组是怎么工作的?

当动态数组公式产生多个结果时,Excel会把这些结果放在一块连续的单元格区域里,这块区域就叫溢出范围。关于溢出范围,有几件事你需要知道:

  • 只有左上角那个单元格包含实际公式,其他单元格只显示结果数值。

  • 源数据一变化,溢出范围自动更新,完全不用手动干预。

  • 如果溢出区域里有任何单元格已经被占用了,Excel会报#SPILL!错误——把挡路的单元格清空就行了。

  • 用 #运算符可以引用整个溢出范围。比如=SUM(A2#)会对A2单元格溢出的所有数值求和,当溢出范围扩大时,求和范围也会自动调整。

  • ⚠️ 注意:动态数组公式在Excel表格(即Ctrl+T创建的智能表)中不起作用,请把它放在普通的网格区域里。

必学的6个核心动态数组函数

下面是在ONLYOFFICE电子表格编辑器中使用频率最高的6个动态数组函数:

1. FILTER —— 按条件筛选数据

根据指定条件提取符合条件的行。

公式示例=FILTER(A2:D11, B2:B11="东部")

效果:从A2:D11区域中筛选出“东部”地区对应的所有行数据,结果自动向下溢出填充。

2. UNIQUE —— 提取不重复值

从指定区域中返回去重后的唯一值列表。

公式示例=UNIQUE(A1:A8)

效果:将A1:A8区域中的所有重复值合并为唯一值列表,自动向下填充。

3. SORT —— 用公式排序

无需手动点击排序按钮,直接通过公式对区域进行排序。

公式示例=SORT(A2:A9)

效果:将A2:A9区域中的数据按升序排列,结果自动溢出填充。

4. SEQUENCE —— 生成连续数字序列

快速生成一个包含连续数字的网格区域。

公式示例=SEQUENCE(4; 7; 1; 1)

参数说明:4行、7列、起始数字1、步长1。结果生成4×7的连续数字网格。

5. RANDARRAY —— 批量生成随机数

用随机数填充指定区域。

公式示例=RANDARRAY(5; 3; 1; 100; 1)

参数说明:5行、3列、最小值1、最大值100、最后一个参数设为1表示生成整数(设为0则生成小数)。每次刷新工作表时,该公式都会重新计算出一批新的随机数。

6. XLOOKUP —— VLOOKUP的现代替代品

能够一次性返回多列匹配结果,再也不用写嵌套公式了。

公式示例=XLOOKUP(G2, A2:A200, B2:D200, "Not found")

效果:在A2:A200中查找G2单元格的值,匹配成功后返回B2:D200对应行的三列数据,结果自动向右溢出填充。如果没找到则显示"Not found"。

💡 小贴士:把这些函数嵌套起来组合使用,威力更大。比如=SORT(UNIQUE(FILTER(...))),一口气完成筛选、去重、排序三步操作。如果对函数参数的具体用法不太熟悉,可以先看看ONLYOFFICE的相关教程。

为什么值得用动态数组?

以下是动态数组带来的5大核心优势:

优势
说明
✅ 自动扩展
输出结果随数据规模自动调整,无需任何人工干预
✅ 公式精简
一条公式替代数十条重复公式,文件体积和复杂度大大降低
✅ 可读性强
审计时只需检查一条源公式,而不是翻遍500条完全相同的公式逐一排查
✅ 减少错误
彻底杜绝手动复制导致的引用失效或公式细微差异等问题
✅ 可组合性
函数之间可以像积木一样自然地串联使用,例如 =SORT(UNIQUE(FILTER(...)))

使用时需要注意什么?

注意事项
具体说明
📍 布局规划
在公式下方和右侧预留足够空白区域,给溢出范围留出空间
🔌 兼容性
动态数组函数仅在Excel 365、Excel 2021或ONLYOFFICE文档中可用,旧版Excel无法支持
⚡ 大型区域
将UNIQUE或FILTER直接套用到整列(如A:A)会导致重新计算变慢,建议将输入范围限制在实际包含数据的行数内

实操案例:用RANDARRAY + RANK做绩效评分卡

这个案例展示如何把多个动态数组函数组合起来,实现一个完整的应用场景。

场景:为一个5人团队模拟绩效得分,并自动为每个人分配排名。

操作步骤

  1. 在A2:A6单元格区域输入5个员工姓名。

  2. 在B2单元格中生成50到100之间的随机分数:

    text

    =RANDARRAY(5, 1, 50, 100, 1)

    这会在B2:B6中生成5个随机整数分数。⚠️ 一旦你对生成的分数感到满意,请立即将它们粘贴为“数值”(快捷键Ctrl+Shift+V → 选择“仅粘贴数值”),否则每次工作表刷新时分数都会自动重算。

  3. 在C2单元格中为每个分数分配排名:

    text

    =RANK(B2, $B$2:$B$6, 0)

    然后将这个公式向下拖动到C6单元格。注意这里的$符号用来锁定引用范围$B$2:$B$6,确保每个分数都能与完整的5人分数集合进行比较——如果不加$符号,每一行只会跟自己的分数比较,排名永远是1。

最终效果:呈现一个三列的成绩单——A列姓名、B列得分、C列团队排名。每当分数变动时,排名结果会自动更新。整个过程无需手动排序,也无需借助任何辅助列。

哪些人最适合用动态数组?

  • 数据分析师:利用FILTER、UNIQUE和SORT函数,无需辅助列或数据透视表,即可构建自动更新的数据汇总报表。

  • 财务团队:构建随新交易数据录入而自动刷新的财务报表,并利用SEQUENCE函数搭建财会周期的结构框架。

  • 项目经理:创建任务追踪表,动态列出当前活跃的项目、唯一的任务负责人或逾期未完成的事项——整个过程无需编写任何宏代码。

什么时候该考虑用动态数组?

以下几个场景最适合使用动态数组:

  • 需要实时数据且无需手动更新的各类报表与仪表盘

  • 构建下拉列表或数据汇总时需要提取唯一值清单

  • 需要进行排名或筛选视图展示,但又不希望改动原始数据源

  • 利用XLOOKUP函数进行多列查找匹配

如何开始体验动态数组?

动态数组是现代电子表格工作中极为实用的升级之一。一条公式即可替代数十条旧式公式,计算结果自动实时更新,让你的文档保持整洁有序且易于审计。

建议从小处着手

  • 把VLOOKUP列替换为XLOOKUP

  • 制作下拉列表时尝试使用UNIQUE函数

  • 用FILTER函数构建动态汇总表,取代传统的静态“复制-粘贴”表格

使用动态数据,你对电子表格的思维方式将因此迅速转变。

福利推荐(序列号获取方法)

豆豆容器市场专注提供优质Docker应用服务,集成一键式容器安装功能,助力用户快速部署OnlyOffice、协作空间、Jitsi-Meet会议系统、内网域名系统、Nextcloud、可道云等办公应用。平台新增IPv6内网直连技术,搭配自动化SSL证书配置及智能域名解析功能,为家庭云服务提供完整技术方案,简化私有云搭建与运维流程,轻松实现高效云端协作管理。

        本容器市场针对各种nas设备优化,全线安装服务支持飞牛、群晖、威联通、麒麟、ubuntu、centors等各种linux系统。 

        独家发布飞牛云豆豆编辑器,支持直接编辑飞牛磁盘上的文档。

        onlyoffice协作空间除了提供常规的标准版/企业版/开发版,还特别针对机器配置较低的用户,独家提供协作空间迷你版(仅需5g内存即可正常运行,官方其他版本需要16g内存)。

        onlyoffice已经支持ARM和x86双模式安装,其他软件同步支持中。

       地址: https://ds.sendtokindle.net.cn/