#溢出! error - 扩展到工作表边缘之外

应用对象
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 动态数组中,该公式会导致 #溢出! 错误,因为 Excel 将查找整个列,返回 1,048,576 个结果,并到达 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 仅引用同一行上的值,然后向下复制公式。 这种传统的公式样式适用于,但不会返回动态数组
使用具有单个lookup_value引用的传统 VLOOKUP:=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 函数

#溢出! 错误

动态数组和溢出数组行为

绝对交集运算符: @