Excel 单元格数组推荐,一格一值的四十年规矩松动了

少数派早报里提了一句,Excel 单元格将支持数组。一句话带过的功能,我去翻了微软官方源头,公告发在 9 月 24 日的 Microsoft 365 Insider 博客,标题直译过来是用列表和数组在一个单元格里放多个值,内容比早报那句转述丰富得多,也有不少边界要说清。

主要功能

这次更新带来三样东西。第一是单元格内列表,插入菜单选 List 或者按 Ctrl+J 创建,一个格子里的多个值可以整体过滤,也可以单独过滤某一项,公式引用一个列表单元格时会自然溢出成一片多值。第二是单元格内数组,公式体用花括号包裹,一乘一的数组留在格子内部不再溢出,官方例子是等于 SMALL 加花括号数组取最小值,以前这种写法要么报错要么铺满一片。第三是嵌套数组,数组里再套数组,两层花括号各管一行,这种写法在旧版本会直接给一个 CALC 错误,现在能算了。这套设计与此前引入的动态数组溢出一脉相承,当年一个公式铺满一列,现在多个值收进一格。

配套还有四个新函数。FLATTEN 把嵌套结构压平,可以指定填充值与压平层数;HAS 判断数组里是否含某个值,HASANY 与 HASALL 分别判断任一命中与全部命中,一套下来数组当集合用的味道很浓。要用嵌套数组计算,需要先把工作簿的计算选项设为兼容性版本三,这是一道明确的开关。官方在公告里回顾,Excel 四十年历史里一格只能放一个值,这句话是官方自称口径,1985 年首发的账他们自己算的,四十年攒下的表格习惯,这次要重新学一部分。

边界与口径

最要紧的一条,这是 Beta 预览版功能,Windows 要 2610 内部版本 20520 以上,Mac 要 16.114 以上,网页版与其他正式渠道暂时没有。官方原话提醒预览功能可能调整或移除,不建议用在重要工作簿里。功能限制也列了一串,条件格式、数据验证、图表、数据透视表、Power Query、查找替换都还不支持数组单元格,条件格式这类高频功能在列,日常表格党短期内感知有限,想拿它重排生产报表的人先等等。费用上没有单独收费,跟着 Microsoft 365 订阅走,加入免费的 Insider 计划选 Beta 通道即可,功能开关在账户设置里,随时能退回正式通道,反馈通道在帮助菜单里,官方明确在收集试用意见。四个新函数倒是随预览一起发放,学起来不亏。

解决了什么需求

HN 上的公告帖拿到 276 分 194 条评论,讨论质量很高。用户 infogulch 的态度是早该如此,当初就不该用溢出方案绕路;用户 drfloyd51 的比方精辟,Excel 有了 z 轴。反对声同样有分量,用户 lordnacho 认为这种类型软化正是 Excel 被玩坏的原因,太灵活的结果是谁也读不懂的面条表格;用户 shakna 担心存量 VBA 管线被新行为破坏。Reddit 的 Excel 版块也有讨论帖,更早的版本里就有人目击嵌套数组的界面元素露头,受网络所限没能抓到具体评论者,如实说明。这类讨论的真实价值在提醒,新能力越强,表格治理越要跟上,乱起来也更快,治理规范先行,新功能才是助力。

上手流程

三步。第一步加入 Microsoft 365 Insider 计划,通道选 Beta,免费的;第二步更新到对应版本号,Windows 是 2610 内部版本 20520 起,Mac 是 16.114 起,公式区打开计算选项,把工作簿设为兼容性版本三;第三步找个不重要的新工作簿试,Ctrl+J 建个列表,比如把一组待办标签收进一格,再用 HAS 判断是否包含某项,然后写个花括号数组公式感受一下。旧工作簿别急着动,官方的警告不是客套。

总结

一格一值是 Excel 的地基级设计,这次松动意味着表格可以表达更立体的数据了。尝鲜值得,迁移生产文件等正式版落地再说,Insider 用户先玩起来,表格重度用户尤其值得,等正式版落地前把玩法想清楚,玩完记得把试验文件删干净,别混进正式报表,等正式版落地时,你就是那个最熟的人。

来源

  • Microsoft 365 Insider 官方公告 https://techcommunity.microsoft.com/blog/microsoft365insiderblog/put-multiple-values-in-one-cell-with-lists-and-arrays-in-excel/4559395
  • HN 讨论 https://news.ycombinator.com/item?id=49849832
  • 少数派早报线索 https://sspai.com/post/115079