概念:工作簿中的数组公式
数组是指包含在多个电子表格单元格中的一组数据。从外观上来看,数组与简单的单元格范围并无区别,但它实际上是一种特殊结构,可作为一个整体使用。就 Worksheets 而言,动态数据区域和输入区域都是数组的示例。如果公式处理的是单个单元格,而不是数组,则该公式是
标量
公式;公式会在单个单元格中返回结果。数组可以是一维数组,即在一行或一列中包含值的数组;也可以是二维数组,即在呈矩形的列和行中包含一组值的数组。您会看到以文本形式表示的水平数组,它们使用大括号括起,各个值之间用逗号分隔,例如公式 ={1,2,3,4}。另外还有垂直数组,各个值之间用分号分隔,例如 ={5;6;7;8}。二维数组可以同时使用逗号和分号分隔,例如 ={1,2,3;4,5,6}。
数组公式是一个公式,它对数组中的各个值执行计算,然后返回结果数组。数组结果区域称为
溢出
区域。数组公式使用的语法与常规公式相同。您可以:- 提交公式,从而将结果输出到数组中。数组中的所有单元格是一个整体,您可以将它们作为一个实体使用。这属于多单元格数组公式。
- 在单个单元格中提交公式,从而对数组进行运算,同时在单个单元格内显示结果。这属于单单元格数组公式。与多单元格数组公式相比,单单元格数组公式的使用频率要低得多。
您可以在数组公式中使用多个常用函数,例如 SUM 和 COUNT。有多项函数(例如 TRANSPOSE)仅在数组运算中有意义。
使用数组公式时,请考虑以下事项:
- 数组公式的性能更好。与使用 1,000 个单独的公式相比,使用 10x100 多单元格数组公式的速度更快。
- 使用多单元格数组公式有助于避免您或其他用户意外覆盖单元格公式。
- 无法编辑数组的单个单元格,溢出区域左上角的单元格(也称为根单元格)除外。如果您在溢出区域中选择了其他单元格,则系统会在公式栏中显示该公式,但您无法对其进行更改。要更新公式,请选择根单元格,然后根据需要进行更改。按 Enter 键后,Worksheets 会自动更新溢出区域的其余部分。
有约束和无约束的数组公式
在公式中,如果您指定了用于存放结果的单元格的确切范围,则表示您使用的是有约束的数组公式。仅当您知道应包含结果集的特定范围时,才能使用有约束的数组公式。如果您在该范围内添加或移除数据,则必须修改数组公式,以将数据变更考虑在内。
Worksheets 提供了一种更灵活的方法来处理数组数据。如果您在处理动态数据(例如 Workday 报告数据或输入区域数据),那么只要您刷新动态数据,数据数组的大小就有可能发生改变。数组公式需要适应此类变更。Worksheets 使用无约束的数组公式来处理数组大小变化。如果您在提交公式时未指定输出的具体数组大小,从而允许 Worksheets 动态确定数组结果集,那么您使用的就是无约束的数组公式。
我们在以下几种不同的上下文中使用“无约束”这个术语:
- 我们将 GROUPBY 等公式称为“无约束的数组公式”,因为此类公式的输出是可变的。
- 动态数据数组(例如 Workday 报告数据集)属于无约束的数组,因为其数组大小会随着动态数据的刷新而增大或缩小。
- 范围引用(例如 B:B)属于无约束的列引用,因为您并未指定列中包含数据的单元格数量。
提交数组公式
您可从以下任一位置提交数组公式:
- 公式栏。
- 包含公式的单元格。提交之前,请双击单元格以确保其处于有效状态。
您可以使用以下键盘快捷键提交数组公式:
- 要提交无约束的数组公式,请按 Ctrl+Alt+Enter (Windows) 或 Command+Option+Enter (Mac)。结果会显示在范围内的所有必填单元格中。如果空单元格数量不足,导致无法显示完整结果,则会出现错误。请确保空单元格的数量足以容纳结果。
- 要提交有约束的数组公式,请按 Ctrl+Shift+Enter (Windows) 或 Command+Shift+Enter (Mac)。结果仅会在所选范围内显示。在其他常见电子表格产品中,您会看到相同的行为。