尝试输入的溢出数组公式超出了工作表的范围。 请使用较小的范围或数组重试。
在以下示例中,将公式移动到单元格 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 网格的末尾。
使用以下方法之一解决此问题:
| # | 方法 | 公式 |
|---|---|---|
| 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 技术社区 中咨询专家,或在 社区中获取支持。