在 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-指定個數累加總和(INDIRECT)

Excel-表格轉換(MATCH,INDIRECT,OFFSET)

Excel-根據成績計算各班最高分和最低分和各科之頂標、前標、均標、後標、底標(INDIRECT,MAX,MIN,SMALL,陣列公式)

Excel-由資料清單中篩選一組

Excel-不因在第一列插入資料或是在最後一列新增資料而改變公式(INDIRECT,OFFSET,COUNT)

Excel-利用SUMPRODUCT、WEEKDAY、INDIRECT計算今天起的日期區間中特定星期幾的數量

Excel-將數字的每一位元加總(SUMPRODUCT,MID,ROW,LEN,INDIRECT)

Excel-依字母順序轉換26進制數值(INDIRECT,COLUMN)

Excel-由Google表單填答結果計算各個班級在各個題目的平圴(INDIRECT,SUMPRODUCT)

Excel-依月份查詢資料清單(INDEX,ROW,INDIRECT,INDIRECT)

學不完.教不停.用不盡文章列表

arrow
arrow
    全站熱搜

    vincent 發表在 痞客邦 留言(21) 人氣()