INDEX 函數的作用是從指定的儲存格範圍中,依照給定的列號和欄號,提取並傳回該位置的資料。它是 Excel 中進行進階資料查詢的核心函數之一。
Excel INDEX 函數語法
=INDEX(陣列, 列號, [欄號])| 參數 | 必填 | 說明 |
|---|---|---|
| 陣列 | 是 | 要提取資料的儲存格範圍或陣列常數。 |
| 列號 | 是 | 指定要從陣列中傳回哪一列的資料。如果省略,則必須指定欄號。 |
| 欄號 | 選填 | 指定要從陣列中傳回哪一欄的資料。如果省略,則必須指定列號。 |
回傳:傳回指定列與欄交叉處的儲存格內容或參照。
適用版本:Excel 2007 以上、Microsoft 365
INDEX 函數範例
範例 1:基本單欄資料提取
從員工名單中找出第 3 位的姓名。
| 員工編號 | 姓名 |
|---|---|
| E001 | 王小明 |
| E002 | 陳怡君 |
| E003 | 林家豪 |
| E004 | 張雅婷 |
在 D2 輸入公式:
=INDEX(B2:B5, 3)結果:林家豪。範圍 B2:B5 只有一欄,公式指定提取第 3 列的資料,因此傳回該範圍中第 3 個儲存格的值「林家豪」。
範例 2:二維表格交叉查詢
根據指定的列與欄,找出特定業務員在第二季的業績。
| 業務員 | 第一季 | 第二季 | 第三季 |
|---|---|---|---|
| 王小明 | 15000 | 18000 | 16000 |
| 陳怡君 | 21000 | 23000 | 25000 |
| 林家豪 | 12000 | 14000 | 13000 |
在 F2 輸入公式:
=INDEX(B2:D4, 2, 2)結果:23000。範圍 B2:D4 包含所有業績數字,公式指定傳回第 2 列與第 2 欄交叉處的數值,結果為陳怡君第二季的業績 23000。
範例 3:搭配 MATCH 函數動態查詢
透過員工姓名反向查詢對應的員工編號(向左查詢)。
| 員工編號 | 部門 | 姓名 |
|---|---|---|
| A101 | 行銷部 | 王小明 |
| A102 | 業務部 | 陳怡君 |
| A103 | 人資部 | 林家豪 |
在 E2 輸入公式:
=INDEX(A2:A4, MATCH("陳怡君", C2:C4, 0))結果:A102。先用 MATCH 找出「陳怡君」在 C2:C4 中的相對位置為 2,再由 INDEX 從 A2:A4 範圍中提取第 2 列的員工編號。
使用 INDEX 的技巧與注意事項
- 如果將列號或欄號設為 0,INDEX 會傳回整欄或整列的陣列。這在搭配 SUM 或 AVERAGE 等彙總函數時非常有用。
- INDEX 傳回的是儲存格的「參照」而非單純的值,因此可以放在冒號兩側建立動態範圍,例如 A1:INDEX(A1:A10, 5)。
- 雖然 XLOOKUP 已經能取代大部分 INDEX 與 MATCH 的組合,但在處理舊版 Excel 檔案或需要動態參照時,INDEX 依然不可或缺。
INDEX 常見錯誤與解決方法
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
| #REF! | 指定的列號或欄號超出了陣列的實際範圍。例如範圍只有 5 列,卻要求傳回第 6 列。 | 檢查公式中的列號與欄號數值,確保它們小於或等於指定範圍的總列數與總欄數。 |
| #VALUE! | 列號或欄號使用了非數值的文字,或者引數的格式不正確。 | 確保輸入的列號與欄號為大於 0 的整數,若使用其他函數動態產生,需確認其傳回值為數字。 |
Google 試算表可以用 INDEX 嗎?
Google 試算表完全支援 INDEX 函數,語法和用法與 Excel 相同,且同樣能與 MATCH 函數完美搭配進行進階查詢。
下載 INDEX 範例檔
上面的範例都整理在這個檔案裡,每個範例一個工作表,黃色格子是公式,可以直接改資料看結果變化:INDEX 範例.xlsx(範例公式都在試算表軟體實際計算過)。
常見問題
INDEX 和 VLOOKUP 有什麼不同?
VLOOKUP 只能由左向右查詢,且查閱值必須在範圍的第一欄。INDEX 搭配 MATCH 則不受此限制,可以進行向左查詢、多條件查詢,在處理大量資料時通常更具彈性。
為什麼我的 INDEX 函數會出現 #REF! 錯誤?
這是因為指定的列號或欄號超出了你設定的陣列範圍。例如你的資料範圍只有 10 列,但列號參數卻輸入 11,就會導致找不到對應儲存格而報錯。
INDEX 函數的列號和欄號可以省略嗎?
可以省略其中一個。如果陣列只有一欄,可以省略欄號;如果陣列只有一列,可以省略列號。若兩者皆省略或設為 0,則會傳回整個陣列的範圍參照。
相關函數
這篇收錄在「Excel 函數字典」。




