网站搜索

Excel 中整列引用的隐藏成本:了解 3 种替代方法优化工作簿性能


Excel 中的整列引用会严重影响性能,通常会迫使程序处理超过一百万行的范围。因此,它们可能会显著降低工作簿的运行速度。因此,停止使用 A:A 引用,改为创建动态范围。

百万行税的隐性成本

整列引用(A:A)可能会迫使 Excel 处理 1,048,576 行,尤其是在进行数组式计算或评估每个单元格的函数时。以这个 50 行的数据集为例。在单元格 D1 中,你想使用 UNIQUE 函数列出 B 列中所有的人名。

为了确保公式能够获取添加到第51行、第52行及后续行的任何新数据,你可以使用整列引用:

=UNIQUE(B:B)

这个公式会检查 B 列中的所有单元格——包括活动范围下方的空行,这些空行由异常的零表示。

零测试:证明责任

如果你想准确地看到在输入整列引用时你让 Excel 处理的内容,可以在 D1 单元格中输入:

=B:B

当你向下滚动时,你会看到超过一百万个尾随零,这些零表示从第51行开始的B列中的空白单元格。

虽然有些函数会忽略这些空白格,但有些函数会将它们视为有效输入,返回零值,这不仅使结果杂乱无章,还表明引擎被迫处理空白内容。

现代 Excel 使用“范围筛选”来跳过空行,但它依赖于已用范围是干净的。如果第 10,000 行包含一个多余的空格,Excel 会将整个空白区域视为有效数据。此外,公式仍然必须与整个范围交互以验证边界。

这里有三个内置工具可以帮助你防止这种行为。

解决方案 1:将您的数据转换为 Excel 表格

避免百万行限制的最可靠方法是使用 Excel 表格——一种动态对象,它会完全改变 Excel 计算数据的方式。

表格用明确的边界替代了整列引用的巨大范围。如果你的数据有50行,表格对象的长度正好是50行,因此当公式引用表格时,Excel 的计算引擎会将注意力限制在该容器内。

首先,确保您的数据集有列标题。接下来,选择范围内的任意单元格,按 Ctrl+T,在“创建表格”对话框中,确保勾选“我的表格有标题”。然后,点击“确定”。

表格使用结构化引用,这不仅更易于阅读,还能锁定数据的维度。因此,要列出 B 列中使用的所有唯一名称,您需要将公式从无限制的列扫描更改为针对表格的搜索:

=UNIQUE(Table1[Manager])

请注意,结果底部的零已经消失,因为公式中只引用了表格范围内的数据。

要更改表格的名称(例如将 Table1 改为 T_Managers),请选择范围内的任意单元格,打开“表格设计”选项卡,然后在表格名称字段中输入新名称。除了许多其他好处之外,这还能让公式更易于阅读。

这种方法比整列引用更好,有两个原因:

  1. 零浪费计算:由于表格有明确的结束,Excel不需要处理数据下方的空白区域。
  2. 自我管理的范围: 当你向第51行添加数据时,表格边界会自动向下扩展一行,而且你的公式会紧贴这个范围,无需任何手动调整。

解决方案 2:使用 TRIMRANGE 函数

如果你不想将 Excel 数据转换为正式表格,TRIMRANGE 函数是下一个最佳选择。它让你像以前一样使用整列引用,但会告诉 Excel 仅裁剪包含实际数据的单元格范围。

TRIMRANGE 函数仅适用于使用 Microsoft 365 版 Excel、网页版 Excel 以及 Excel 移动和平板应用的用户。

TRIMRANGE 有三个参数:

=TRIMRANGE(range,[trim_rows],[trim_cols])

在哪里:

  • range(必填)是要修剪的范围。
  • trim_rows(可选)告诉 Excel 是否去掉开头的空行(1)、末尾的空行(2)或两者(3)。
  • trim_cols(可选)告诉 Excel 是否去掉开头的空白列(1)、结尾的空白列(2)或两者(3)。

要将此逻辑应用到您的数据集,请输入:

=UNIQUE(TRIMRANGE(B:B,2))

这里,"2" 强制公式去除末尾的空单元格。由于公式中只引用了一个列,因此无需引入 trim_cols 参数。

如果你双击单元格 D1,视觉选择框仍会环绕整个列。这是一个用户界面显示功能,可以让你轻松看到函数所基于的源范围。然而,TRIMRANGE 函数是对计算引擎的内部指令,因此视觉选择并不反映公式实际处理的优化范围。

这就是为什么这是处理整列引用的一个好方法的原因:

  1. 动态且整洁的引用: 您可以获得整列引用的灵活性——它仍然能够找到您之后添加的新数据。然而,计算引擎仅在 50 行活动数据上执行。
  2. 网格灵活性:您可以获得类似表格的性能,而无需更改工作表的视觉格式

解决方案 3:使用 trim ref 操作符

Excel 的修剪引用运算符提供了与 TRIMRANGE 函数完全相同的好处,但需要输入的内容更少。

TRIM 引用运算符的可用性与 TRIMRANGE 函数相同:Microsoft 365 版 Excel、网页版 Excel 以及 Excel 移动和平板应用。

通过在范围的冒号两边添加一个句点 (.),你可以告诉 Excel 从该方向去掉空单元格:

句号应该加在哪里

哪些空格被修剪

冒号之后

尾随空格

冒号前

前导空格

冒号的两边

前导和尾随空格

所以,继续使用之前的同一列表,输入:

=UNIQUE(B:.B)

冒号后的部分告诉 Excel 在包含数据的最后一行停止——在本例中是第 50 行。

这是一个好方法,因为:

  1. 极简公式:您可以获得高性能的优势,而无需更改电子表格的视觉格式或在额外函数中包装范围。
  2. 精确控制: 你可以轻松选择并更改要忽略的空白,通过将点放置在与冒号相对的适当位置来实现。
  3. 清理数据结果:此方法可防止现代功能拾取尾随零,确保您的结果保持准确且无虚假数据。

除了优化你的公式外,还要记住这些习惯,以保持你的 Excel 工作簿高效:

  • 限制过度格式化:不要对整列应用边框或颜色。
  • Ctrl+End 技巧: 使用此快捷键可以找到 Excel 认为数据结束的位置。如果它跳到第 1,000,000 行,那说明你有“幽灵单元格”。
  • 重置网格:如果有空白单元格,选择空行,右键点击,然后选择“删除”(不要只是按退格键)。然后,立即保存您的工作簿,以重置最后一个单元格并缩小文件大小。

相关文章