在 Excel 中如果某個儲存格內容要關聯至另一個工作表的某個儲存格,其公式為:
儲存格=工作表名稱!儲存格名稱
如果你要使用公式將工作表名稱以變數方式來處理,則必須藉助 INDIRECT 函數來將字串轉換為位址。
參考下圖,其中有三類的工作表名稱:工作表1、AAA、1。
你可以在 INDIRECT 函數中如此設定:
(1) 儲存格D2:=INDIRECT(C2&"!A2")
(2) 儲存格D2:=INDIRECT("'" & C2&"'!A2")
兩者差在工作表名稱有使用「'」來含括,在本例二式的結果都正確。
如果你的工作表名稱是數值,要以變數來處理,則公式改為:
(1) 儲存格D8:=INDIRECT(ROW(1:1)&"!A2")
(2) 儲存格D8:=INDIRECT("'" & ROW(1:1)&"'!A2")
如果你把工作表名稱中的數值部分改以變數來處理,則公式改為:
(1) 儲存格D2:=INDIRECT("工作表" & ROW(1:1) &"!A2")
(2) 儲存格D2:=INDIRECT("'工作表" & ROW(1:1) &"'!A2")
以上的說明,你能理解嗎?
現在問題來了:如果將「工作表1」改為「工作表 1」(其中有插入一個空格)
則原來的公式結果產生了差異:
(X) 儲存格D2:=INDIRECT(C2&"!A2")
(O) 儲存格D2:=INDIRECT("'" &C2&"'!A2")
如果你的工作表名稱中有空格,則公式中的工作表名稱變數一定要用「'」含括。
因為 =INDIRECT(C2&"!A2") 在執行時被轉換為:
=INDIRECT("工作表 1!A2")
但這是錯誤的,轉換成以下才是正確的!
=INDIRECT("'工作表 1'!A2")
【延伸閱讀】
* Excel-表格轉換(MATCH,INDIRECT,OFFSET)
* Excel-根據成績計算各班最高分和最低分和各科之頂標、前標、均標、後標、底標(INDIRECT,MAX,MIN,SMALL,陣列公式)
* Excel-不因在第一列插入資料或是在最後一列新增資料而改變公式(INDIRECT,OFFSET,COUNT)
* Excel-利用SUMPRODUCT、WEEKDAY、INDIRECT計算今天起的日期區間中特定星期幾的數量
* Excel-將數字的每一位元加總(SUMPRODUCT,MID,ROW,LEN,INDIRECT)
* Excel-依字母順序轉換26進制數值(INDIRECT,COLUMN)
* Excel-由Google表單填答結果計算各個班級在各個題目的平圴(INDIRECT,SUMPRODUCT)
留言列表