Excel 教學:INDIRECT 函數
1. INDIRECT 函數的用途
INDIRECT 函數用來返回由文字組成的有效儲存格引用,即根據傳入的文字值來動態產生一個參照。這個函數允許你引用範圍、儲存格或工作表,且這些引用是動態的,可以根據條件改變引用的內容。
2. INDIRECT 函數的語法
INDIRECT(ref_text, [a1])
| 參數 | 說明 |
|---|---|
ref_text | 必填,一個以文字表示的儲存格參照或範圍名稱。 |
[a1] | 選填,如果為 TRUE 或省略,表示使用 A1 標準參照;如果為 FALSE,則使用 R1C1 參照。 |
- A1 參照模式:如
A1或B2,這是 Excel 中的預設參照方式。 - R1C1 參照模式:如
R1C1、R2C3,用數字表示行列位置。
3. INDIRECT 函數範例
? 範例 1:基本的 INDIRECT 函數使用
假設 A1 儲存格內容為 "B2",B2 儲存格的值為 50。
? 使用 INDIRECT 來引用 B2 儲存格的值:
=INDIRECT(A1)
? 結果:50。
這裡,INDIRECT(A1) 會返回儲存格 B2 的值,因為 A1 內容是 "B2"。
? 範例 2:動態引用不同工作表的資料
假設有兩個工作表:Sheet1 和 Sheet2,Sheet1 的 A1 儲存格內容是 "Sheet2!B2",而 Sheet2 的 B2 儲存格內容為 200。
? 使用 INDIRECT 來動態引用 Sheet2 的 B2 儲存格:
=INDIRECT(A1)
? 結果:200。
這裡,INDIRECT(A1) 會根據 A1 的文字內容 "Sheet2!B2" 引用 Sheet2 的 B2 儲存格。
? 範例 3:動態選擇範圍
假設有多個範圍名稱,例如 Range1 和 Range2,你想根據某些條件選擇範圍。
? 在 A1 儲存格輸入範圍名稱(如 Range1),並使用 INDIRECT 來引用這個範圍:
=SUM(INDIRECT(A1))
? 假設 Range1 代表 B2:B5 的範圍,則這個公式會計算 B2:B5 的總和。
? 範例 4:R1C1 參照模式
假設有以下資料:
| A | B | C |
|---|---|---|
| 10 | 20 | 30 |
| 40 | 50 | 60 |
? 使用 INDIRECT 與 R1C1 參照模式來引用 B2 的值:
=INDIRECT("R2C2", FALSE)
? 結果:50。
這裡,"R2C2" 是 R1C1 參照格式,代表第 2 行第 2 列的儲存格,即 B2。
4. INDIRECT 函數的應用
✅ 動態選擇儲存格或範圍:根據條件動態決定要參照哪個儲存格或範圍。
✅ 多工作表引用:根據儲存格中的文字動態引用不同工作表的資料。
✅ 參照命名範圍:使用命名範圍並根據條件動態引用。
5. INDIRECT 函數的限制
| 限制 | 說明 |
|---|---|
| 無法處理錯誤的參照 | 如果 ref_text 所指的儲存格或範圍無效,會返回 #REF! 錯誤。 |
| 不支援對動態範圍的直接引用 | 當你嘗試通過 INDIRECT 引用動態範圍時,某些操作可能無法正常工作(如範圍大小改變)。 |
| 僅限於文字參照 | INDIRECT 需要文字格式的儲存格參照,無法直接處理其他函數的數值參照。 |
6. 總結
INDIRECT函數允許動態引用儲存格、範圍或工作表,並能根據條件改變引用對象。- 它可以與其他函數(如
SUM,VLOOKUP,INDEX等)結合使用,實現更靈活的資料查詢與計算。 - 注意
INDIRECT需要傳遞文字格式的儲存格參照,並且不支援直接參照動態範圍或處理錯誤參照。