使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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

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

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

常见原因:完整列引用

通过过度指定 VLOOKUP 参数来创建VLOOKUP公式lookup_value方法。支持动态数组的 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 网格的末尾。

Excel 中的 #SPILL! 在单元格 E2 中由 = VLOOKUP (A:A、A:D、2、FALSE) 导致的错误,因为结果将溢出工作表的边缘。 将公式移动到单元格 E1,它将正常工作。

有 3 种简单方法来解决此问题:

#

方法

公式

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 技术社区中咨询专家,在解答社区获得支持,或在 Excel User Voice 上建议新功能或功能改进。

另请参阅

FILTER 函数

RANDARRAY 函数

SEQUENCE 函数

SORT 函数

SORTBY 函数

UNIQUE 函数

Excel 中的 #SPILL! 错误

动态数组和溢出数组行为

绝对交集运算符: @

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×