2015年7月8日 星期三

Excel-配合INDIRECT函數取得不同工作表的儲存格內容的使用方式

在 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")

沒有留言:

張貼留言

檢視其他文章

好康東東