Excel 终于支持在一个单元格里放多个值

查看原文 HN 讨论

文章摘要

(说明:微软 Tech Community 原文页面被 Azure WAF 拦截,无法直接抓取。以下内容根据 HN 帖子中引用的原文片段,以及 TechRepublic、Office Watch、XenoSpectrum 等媒体对这篇官方博客的转述整理而成。)

微软在 2026 年 9 月 24 日的 Microsoft 365 Insider 博客中宣布:Excel 引入列表(lists)、单元格内数组(arrays in cells)和嵌套数组(nested arrays)三项功能,首先面向 Windows 和 Mac 的 Beta 频道推送。官方原话是:”在 Excel 40 年的历史中,你一直只能在一个单元格里放一个值。”这次要改的正是这条最基本的规则。

列表。 过去在项目表里写”张三, 李四, 王五”,Excel 只把它当作一整段文本。新的列表让一个单元格可以容纳多个彼此独立的值,Excel 能分别识别它们。创建方式是”插入 > 列表”或按 Ctrl+J,然后输入或粘贴用逗号或分号分隔的条目(取决于区域设置)。单元格左侧会出现一个小图标,点开能看到列表内容,双击或按 F2 可以编辑单个条目。筛选时,筛选下拉框会把每个条目单独列出一次,因此即便每个项目的负责人组合各不相同,也能直接筛出”包含某个人”的所有项目。公式引用列表单元格时,返回的是里面的值,比如 B2 是列表,另一个单元格写 =B2,这些值就会溢出(spill)到相邻单元格;如果想原样复制列表,Office Watch 发现可以写成 ={B2}。

单元格内数组。 自 2018 年引入动态数组以来,SORT、FILTER 之类返回多个结果的公式都会”溢出”到周围的单元格,周围有数据就报 #SPILL! 错,在 Excel 表格(Table)里也不能用溢出公式。现在数组可以作为值或公式结果原生地留在一个单元格里,形状和大小可以各不相同。官方示例是:={1;2;3} 会溢出成三个单元格,而 ={{1;2;3}} 则把原数组包进一个 1×1 的外层数组,三个值留在同一个单元格中。同理,={SORT(B3)} 能把整个排序结果收在一格里。这里的花括号是用户自己在等号后面手敲的,和以前 Ctrl+Shift+Enter 由 Excel 自动加在公式外面的那种数组公式括号不同。官方举了一个跑步记录的例子:每一行是一次跑步,各段的分段用时以数组形式存在一个单元格里,不管跑多远、分多少段,都能在同一行算出总时间、平均配速和最快分段,不必为长度不定的数据预留固定数量的列。

嵌套数组与新函数。 嵌套数组是包含其他数组的数组。以前,返回”数组的数组”的公式要么被截断,要么报 #CALC! 错,最典型的就是在 BYROW 里调用 TEXTSPLIT。现在支持的公式可以返回完整的嵌套结果。配套新增了几个函数:FLATTEN 把嵌套数组展平(可指定层数,较短的行用空字符串补齐);HAS 判断列表是否包含某个值(整项匹配,”Bob” 不会匹配 “Bobby”);HASANY 判断是否包含任意一个;HASALL 判断是否全部包含,适合”找出 Ann 和 Bob 都参与的项目”这类问题。COUNTA、SUM、SORT、UNIQUE、XLOOKUP、GROUPBY 等现有函数也能处理列表里的条目。

兼容性与限制。 多数嵌套数组计算需要把工作簿的”兼容版本”切换到 Version 3(在”公式 > 计算选项”中按工作簿设置)。微软承认,切到 Version 3 后部分已有公式可能返回不同的结果,遇到问题可以留在 Version 1 或 2。预览版还有不少已知限制:数据透视表、Power Query 不能直接处理单元格内的值,图表不会把数组展开成数据点,查找替换不能替换列表里的单个条目,列表不能作为数据验证下拉框的来源。微软明确表示不建议在正式发布前把这些功能用在重要的工作簿里,行为可能会根据反馈调整,也可能被暂停或移除。预览要求 Windows 版本 2610(内部版本 20520.20000)及以上、Mac 版本 16.114(内部版本 26092111)及以上,并且是逐步推送的。

第三方媒体也提出了几点提醒:Office Watch 测试发现列表最长受限于单元格 32767 个字符的上限,超出部分会被静默截断且不报错;目前没有可靠的办法用公式判断一个单元格是不是列表(TYPE 返回 64,和普通数组一样);微软也还没公开这些新值在 .xlsx 文件里如何存储,旧版 Excel、Google Sheets、LibreOffice、CSV 导出以及 openpyxl、pandas 等库读到这类单元格会发生什么,暂时没有答案,所以在确认对方也用最新 Insider 版之前,最好不要把含列表的工作簿发给别人。

HN 评论精华

帖子 278 分、约 190 条评论。讨论分成三派:欢迎这项改动的实用派、担心 Excel 变得更混乱的原则派,以及一大串”某某软件几十年前就有了”的考古派。另有一条关于在 Excel 里表示概率分布的支线讨论得相当热烈。

早就在偷偷这么干了。 排在最前的是 sublinear 的评论:这感觉像是 Excel 早该有的东西,但官方的表述听起来像要”谋杀 Excel”;他坦白自己很久以来一直在电子表格里”走私” JSON,而且毫不后悔。mlhpdx 跟了一句:冒着成为梗的风险,他曾经用 OLE 把电子表格嵌进单元格里,”那感觉棒极了”。infogulch 说早该这样做,而不是搞溢出那一套。amanzi 原本怀疑,但看完觉得确实有用,他最近就处理过一个”用户 + 逗号分隔的软件列表”的表格,解析起来简直是噩梦。kbenson 的概括很到位:这相当于给数据库字段加上了 JSON 类型的支持和一个好用的界面,听起来像贬低,其实挺酷。

真正动手试过的人怎么说。 ukadakal 当天早上就在一个包含大量动态数组中间计算的大型模型上做了测试:把那些溢出区域换成单元格内数组后,所有引用它们的公式照常工作,很多时候只需在原公式外加一对 {},整个工作簿立刻干净了许多。他认为眼下最直接的价值就在这里:省掉辅助溢出区域,减少 #SPILL! 问题。nxobject 说他不会怀念溢出数组公式,在他所在的行业里电子表格常被当作表单用,溢出和这种结构总是合不来,他还希望以后加上集合之类的复合类型。ed_elliott_asc 说用了 30 年 Excel,这是他见过的唯一一项真正革命性的功能,因为它改的是类型系统;NetMageSCW 则认为当年改用以数组为先的计算引擎、引入溢出才更了不起,这次只是让数组成为一等公民的单元格类型。

反对与担忧。 lordnacho 认为这种类型上的松散正是 Excel 糟糕的原因:功能面面俱到并非好事,设计需要约束和惯用法,什么都灵活就会让人写出谁也看不懂的意大利面。seemaze 说这类”功能”在实际损害普通人对自身数据的理解,当年和地产经理一起在 DOS 上用 Btrieve 推理数据形状,比今天对付巨无霸 Excel 工作簿直观得多。qubex 用一贯的夸张文风宣布要在列表里定义一堆 lambda、让下游单元格依赖它们,”直到整个东西崩溃”。blt 只留了一句”Codd 哭了”,cubefox 直白指出这违反第一范式。yunruse 的回应比较中肯:单值单元格确实就是第一范式,好处很多,但 Excel 本来就不是关系数据库,对简单场景来说,为一个非标量列再建一张表,对普通用户反而更难理解。nmstoker 批评官方几乎没解释”为什么”,也没讨论这对理解 Excel 所需的心智模型有多大冲击。extraduder_ire 和 Perepiska 关心的是旧版本打开这类文件会怎样、导出 CSV 时又会怎样,这也正是媒体提醒的兼容性风险。spbaar 和 Grombobulous 则替微软辩护:Excel 不需要像编程语言那样有主见,灵活本身就是它能成为通用商业工具的原因。

考古派。 olav 说 TreeSheets 十五年前就有这个功能;FreakyJellyFish 提到 Pick 操作系统几十年前就有多值字段,mikenei 补充至今仍有数百家机构在用多值数据库;d–b 说金融行业 1999 年就有了;还有人提到 Lotus Improv、RagTime 的 3D 电子表格。drfloyd51 吐槽:TreeSheets 用户连 HN 读者的 2% 都不到,这类信息算不上新闻。gcanyon 调侃说 Excel 都能在单元格里放列表了,却依然为了兼容 Lotus 1-2-3 认为 1900 年 2 月 29 日存在;sheept 回应说加新功能和保持向后兼容并不矛盾。

概率分布支线。 m101 说真正的革命应该是让单元格能装概率分布,下游单元格也自动成为分布,这样才能表达现实的不确定性,比如给企业贷款时对财务模型做压力测试。这条引出大量推荐:lorenzowood 介绍了 Guesstimate,所有单元格自动命名,可以放单值、分布或样本数据,公式用蒙特卡洛模拟输出分布,每个单元格还附有解释推理的说明框;balderdash 和 Yossarrian22 推荐了老牌插件 @Risk 和 Crystal Ball;Qem 提到 Gnumeric 内置蒙特卡洛;theblazehen 推荐 Squiggle 语言。m101 希望能用解析方法而不是暴力蒙特卡洛,RogerL 解释说蒙特卡洛之所以被普遍采用,正是因为大多数模型没有解析解,只做解析的工具最后多半是只能算高斯分布的玩具。brookst 说他在微软工作时就向 Excel 团队提过这个想法,大家都觉得很酷,但不值得投入那么多复杂度。zaik 则指出,有了这次的新功能,你完全可以在一个单元格里存一万个样本,再沿样本轴广播计算。

关于 Excel 本身的地位。 thunderbong 说在企业工作过的人都知道,对于会分析但不会编程的人,Excel 是天赐之物。abtinf 回忆在一家禁止软件开发、连 VBA 都屏蔽的航空航天公司,Excel 是唯一可用的工具,用工程师的思路去用它,能直连 SQL Server 处理数亿到数十亿行数据。chasd00 和 pjmlp 都提到企业 IT 里常见的模式:把一个好用的电子表格改造成应用,结果永远在追赶 Excel 两次点击就能实现的功能,pjmlp 说自己简历上就有三个替换 Excel 失败的项目,原因都是没有理解部门里所有人的用法。也有人说他所在的航空公司正在用 Claude 订阅取代 Excel、Power BI 等分析工具,cgio 和 ukadakal 都认为这可能制造比电子表格更大的技术债,或者造成 AI 和 Excel 两套流程并存、逐渐分叉的局面。此外还有一段 dang 提醒 shakna”不要尖酸”的版务插曲,与主题无关。