#溢出! 错误 - 超出工作表边缘

应用对象
Microsoft 365 专属 Excel Microsoft 365 Mac 版专属 Excel Excel for iPad Excel Web App Excel for iPhone Excel for Android 平板电脑版 Excel for Android 手机版

尝试输入的溢出数组公式超出了工作表的范围。 请使用较小的范围或数组重试。

在以下示例中,将公式移动到单元格 F1 可解决此错误,并且公式将正确溢出。

显示 #SPILL 的屏幕截图!单元格 F2 中的 =SORT (D:D) 超出工作簿边缘的错误。将其移动到单元格 F1,它正常工作。

常见原因:完整列引用

通过过度指定 lookup_value 参数创建 VLOOKUP 公式时,会出现一个常见的误解。 在支持 动态数组 的 Excel 之前,Excel 仅考虑与公式位于同一行的值,而忽略任何其他值,因为 VLOOKUP 预期只有一个值。 引入动态数组后,Excel 会考虑提供给lookup_value的所有值。 此更改意味着,如果将整个列指定为lookup_value参数,Excel 将尝试查找该列中的所有 1,048,576 个值。 完成后,它会尝试将它们溢出到网格上,并且很可能会到达网格的末端,从而导致 #SPILL! 错误。  

例如,当放置在单元格 E2 中时,公式 =VLOOKUP (A:A,A:C,2,FALSE) 之前只查找单元格 A2 中的 ID,如下例所示。 但是,在动态数组 Excel 中,公式会导致 #SPILL! 错误,因为 Excel 会查找整个列,返回 1,048,576 个结果,并到达 Excel 网格的末尾。

显示 #SPILL 的屏幕截图!单元格 E2 中的 =VLOOKUP (A:A,A:D,2,FALSE) 会导致错误,因为结果会溢出到工作表边缘之外。将公式移动到单元格 E1,该公式工作正常。

使用以下方法之一解决此问题:

# 方法 公式
1 仅引用你感兴趣的查找值。 此类公式返回动态 数组 ,但不适用于 Excel 表
显示使用 =VLOOKUP (A2:A7,A:C,2,FALSE) 返回不会导致 #SPILL 的动态数组的屏幕截图!错误。
=VLOOKUP(A2:A7,A:C,2,FALSE)
2 仅引用同一行上的值,然后向下复制公式。 这种传统的公式样式适用于 表格,但不返回 动态数组
显示将传统 VLOOKUP 与单个lookup_value引用一起使用的屏幕截图:=VLOOKUP (A2,A:C,32,FALSE) 。此公式不返回动态数组,但可以将其与 Excel 表一起使用。
=VLOOKUP(A2,A:C,2,FALSE)
3 请求 Excel 使用 @ 运算符执行绝对交集,然后向下复制公式。 此公式样式适用于 ,但不返回 动态数组
显示使用 @ 运算符并向下复制的屏幕截图:=VLOOKUP (@A:A,A:C,2,FALSE) 。这种引用样式适用于表,但不返回动态数组。
=VLOOKUP(@A:A,A:C,2,FALSE)

需要更多帮助吗?

你随时可以在 Excel 技术社区 中咨询专家,或在 社区中获取支持。

另请参阅

FILTER 函数

RANDARRAY 函数

SEQUENCE 函数

SORT 函数

SORTBY 函数

UNIQUE 函数

如何更正 #溢出! 个错误

动态数组公式和溢出的数组行为

绝对交集运算符: @