尝试输入的溢出数组公式将超出工作表的范围。 使用较小的范围或数组重试。
在以下示例中,将公式移动到单元格 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 网格的末尾。
可通过 3 种简单的方法来解决此问题:
| # | 方法 | 公式 |
|---|---|---|
| 1 | 仅引用你感兴趣的查找值。 此公式样式将返回动态数组,但不适用于Excel 表。
|
=VLOOKUP(A2:A7,A:C,2,FALSE) |
| 2 | 仅引用同一行上的值,然后向下复制公式。 这种传统的公式样式适用于表,但不会返回动态数组。
|
=VLOOKUP(A2,A:C,2,FALSE) |
| 3 | 请求 Excel 使用 @ 运算符执行绝对交集,然后向下复制公式。 此公式样式适用于表,但不会返回动态数组。
|
=VLOOKUP(@A:A,A:C,2,FALSE) |
需要更多帮助吗?
你随时可以在 Excel 技术社区 中咨询专家或在 社区中获取支持。