在 Excel 中,INDEX 函數能根據指定的列號與欄號,回傳陣列或範圍中的對應值。它是查找與引用的基礎函數之一,常與 MATCH 搭配使用,能取代 VLOOKUP/HLOOKUP,提供更高的彈性與效能。
🔹快速摘要(語法、用途、常見場景)
- 用途:根據列號與欄號,回傳陣列中的值
- 語法:
- 陣列形式:=INDEX(陣列, 列號, [欄號])
- 參照形式:=INDEX(參照, 列號, [欄號], [區塊號])
- 常見場景:動態查找、報表設計、取代 VLOOKUP/HLOOKUP、建立雙向查找、動態範圍引用
一、INDEX 函數語法與用途
陣列形式
=INDEX(array, row_num, [column_num])
- array:要查找的範圍或陣列
- row_num:要回傳的列號
- column_num(選填):要回傳的欄號
參照形式
=INDEX(reference, row_num, [column_num], [area_num])
- reference:一個或多個範圍
- area_num:指定要使用的範圍編號
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:回傳第 2 列第 3 欄的值
=INDEX(A1:C5,2,3)範例二:回傳第 4 列的值(單欄範圍)
=INDEX(A1:A10,4)
範例三:回傳第 2 列第 1 欄的值
=INDEX(A1:C5,2,1)
範例四:搭配 ROWS 動態取最後一列
=INDEX(A1:A10,ROWS(A1:A10))
範例五:搭配 COLUMNS 動態取最後一欄
=INDEX(A1:D1,1,COLUMNS(A1:D1))
🔸進階範例
範例六:搭配 MATCH 建立雙向查找
=INDEX(A2:D10, MATCH("產品A",A2:A10,0), MATCH("銷售額",A1:D1,0))
範例七:搭配 IFERROR 處理查找錯誤
=IFERROR(INDEX(A2:A10,11),"查無資料")
範例八:搭配 SEQUENCE 建立動態範圍
=INDEX(A1:A20, SEQUENCE(5))
範例九:搭配 FILTER 建立條件查找
=INDEX(FILTER(A2:C100,B2:B100="北區"),1,3)
範例十:參照形式選擇不同區塊
=INDEX((A1:A5,C1:C5),3,,2)
回傳 C3 的值。
三、常見問題解答(FAQ)
Q1:INDEX 和 VLOOKUP 有何不同?
INDEX 更靈活,可搭配 MATCH 建立雙向查找,不受限於查找方向。
Q2:INDEX 可以回傳整列或整欄嗎?
可以,若省略 row_num 或 column_num,會回傳整列或整欄。
Q3:INDEX 是否支援動態陣列?
支援,可與 SEQUENCE、FILTER 等函數搭配。
Q4:INDEX 可以處理多範圍嗎?
可以,使用參照形式並指定 area_num。
Q5:INDEX 是否會改變原始資料?
不會,只回傳對應值或範圍。
四、注意事項與錯誤排除
- 若
row_num或column_num超出範圍,會回傳#REF! - 若
row_num與column_num同時省略,會回傳錯誤 - INDEX 不會搜尋值,只是單純依位置回傳
- 適用於動態查找、報表設計與公式優化
- 建議搭配 MATCH、IFERROR 等函數提升彈性與容錯性
五、延伸技巧與相關函數
若需要更完整的查找與引用邏輯,可搭配以下函數:
- MATCH 函數:回傳位置索引,與 INDEX 搭配可取代 VLOOKUP/HLOOKUP
- OFFSET 函數:建立相對位移的動態範圍,但效能較差
- FILTER 函數:根據條件篩選資料,再搭配 INDEX 擷取特定值
- SEQUENCE 函數:建立動態列號或欄號,搭配 INDEX 批次擷取
- XLOOKUP 函數:現代化查找工具,可直接取代 INDEX+MATCH 的組合
六、結語與延伸閱讀推薦
INDEX 函數是 Excel 中最靈活的查找與引用工具之一,適合用在報表設計、動態查找、雙向比對與公式優化等情境。學會 INDEX 後,你可以進一步探索:
- [MATCH 函數教學]:與 INDEX 搭配的最佳組合
- [XLOOKUP 函數教學]:現代化查找工具,簡化公式
- [FILTER 函數教學]:條件篩選與分類輸出的動態工具













