在 Excel 的公式設計中,很多時候我們需要「動態引用」不同的儲存格或範圍。一般的公式只能固定參照某個位置,但 INDIRECT 函數能將文字字串轉換成有效的儲存格或範圍參照,讓公式隨著輸入或條件改變而自動切換。這使得它成為跨工作表抓取資料、建立動態報表、或搭配命名範圍的強大工具。雖然 INDIRECT 在效能上有一些限制,但在需要高度彈性的情境中,它是不可或缺的利器。
🔹快速摘要(語法、用途、常見場景)
- 用途:將文字字串轉換為有效的儲存格或範圍參照
- 語法:
=INDIRECT(ref_text, [a1]) - 常見場景:跨工作表引用、動態報表、資料驗證、命名範圍引用
一、INDIRECT 函數語法與用途
語法:
=INDIRECT(ref_text, [a1])
- ref_text:文字字串形式的儲存格或範圍,例如 "A1"、"Sheet2!B5"、"B"&D1
- a1:布林值,TRUE 表示 A1 格式(預設),FALSE 表示 R1C1 格式
例如:
=INDIRECT("A1")
會回傳 A1 儲存格的值。
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:直接引用文字字串
=INDIRECT("B2")
範例二:搭配儲存格內容
=INDIRECT("B"&A1)
範例三:跨工作表引用
=INDIRECT("Sheet2!A1")
範例四:使用 R1C1 格式
=INDIRECT("R2C3",FALSE)
範例五:引用命名範圍
=INDIRECT("SalesData")
🔸進階範例
範例六:搭配 SUM 建立動態加總
=SUM(INDIRECT("A1:A"&B1))
範例七:搭配 VLOOKUP 動態表格
=VLOOKUP(100,INDIRECT("Table"&A1),2,FALSE)
範例八:建立動態下拉選單 在資料驗證中輸入:
=INDIRECT(A1)
範例九:搭配 IF 判斷引用範圍
=IF(C1="北區",SUM(INDIRECT("NorthData")),SUM(INDIRECT("SouthData")))
範例十:跨工作表動態抓取
=INDIRECT("'"&A1&"'!B2")
三、常見問題解答(FAQ)
Q1:INDIRECT 可以引用關閉的活頁簿嗎?
不行,若外部檔案未開啟會回傳 #REF!。
Q2:INDIRECT 是否會影響效能?
會,因為它是「volatile 函數」,每次重新計算都會更新。
Q3:INDIRECT 可以搭配命名範圍嗎?
可以,能動態切換引用範圍。
Q4:INDIRECT 可以用於資料驗證嗎?
可以,常用於建立依條件切換的下拉選單。
Q5:INDIRECT 可以搭配 R1C1 格式嗎?
可以,將第二參數設為 FALSE 即可。
四、注意事項與錯誤排除
- 若文字字串不是有效參照,會回傳
#REF! - 無法引用關閉的外部檔案
- 大量使用可能降低效能,因為它會強制重新計算
- 命名範圍拼字錯誤會回傳
#NAME? - R1C1 格式未正確指定會導致錯誤
五、延伸技巧與相關函數
- 搭配 ADDRESS : 生成儲存格位址,再用 INDIRECT 轉換為參照
- 搭配 MATCH/INDEX : 建立更高效的動態查找
- 搭配 OFFSET : 建立相對位移範圍(但效能較差)
- 搭配 CHOOSE : 在多個範圍中切換,類似 INDIRECT 的動態引用
- 搭配 CONCAT/TEXT : 生成動態字串,再用 INDIRECT 轉換為參照
六、結語與延伸閱讀推薦
INDIRECT 是 Excel 中的「動態參照」利器,適合用於跨表格引用、動態報表與資料驗證。若需要更高效的查找,建議搭配 INDEX/MATCH 或 XLOOKUP。



















