您嘗試輸入的溢出陣列公式將超出工作表的範圍。 請使用較小的範圍或陣列再試一次。
在下列範例中,將公式移至儲存格 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 中查閱識別碼。 不過,在動態陣列 Excel 中,公式會造成 #SPILL! 錯誤,因為 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 技術社群 中的專家,或在 社群中取得支援。