2018年2月11日 星期日

Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)

在 Excel 中有時會用到多表格的查詢(如下圖),你可以使用各種查詢的公式,例如:INDEX、VLOOKUP、OFFSET等,本例以3種不同的做法來練習在多個表格中查詢,也要看看如何簡化公式。前提是多個表格的格式要是一致的。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)
若要在儲存格H2:J2中使用了3 個條件來搜尋(概念如下圖),可以看成是 3D 的搜尋。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)

【公式設計與解析】
1. 使用 INDEX 函數的參照形式
儲存格K2:
公式:=INDEX(($B$2:$F$4,$B$7:$F$9,$B$12:$F$14,$B$17:$F$19,$B$22:$F$24),
MATCH($I2,$A$2:$A$4,0),MATCH(J$2,$B$1:$F$1,0),MATCH(H2,{"甲班","乙班",
"丙班","丁班","戊班"},0))
INDEX 函數有兩種查表形式:
(1) array 之陣列形式(傳回指定儲存格或儲存格陣列的值)
(2) reference之參照形式(傳回指定儲存格的參照)。
本例使用 reference之參照形式,語法如下:
INDEX(reference, row_num, [column_num], [area_num])
Reference:一個或多個儲存格範圍的參照。(若是非相鄰的選取範圍做為 reference,則必須使用括號括住 reference)
Row_num:參照中要傳回參照的列數。
Column_num:參照中要傳回參照的欄數。
Area_num:在參照中選取範圍以傳回 Row_num 與 Column_num 的交集。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)
公式中利用 MATCH 函數來查詢位置,例如:
(1) MATCH($I2,$A$2:$A$4,0)
查詢儲存格I2在儲存格A2:A4中的位置,傳回一個數值(本例傳回3)。
(2) MATCH(J$2,$B$1:$F$1,0)
查詢儲存格J2在儲存格B1:F1中的位置,傳回一個數值(本例傳回2)。
(3) MATCH(H2,{"甲班","乙班","丙班","丁班","戊班"},0)
查詢儲存格H2(丙班)在{"甲班","乙班","丙班","丁班","戊班"}陣列中的位置,傳回一個數值(本例傳回3)。

2. 使用 OFFSET 函數
儲存格K2:
公式:=OFFSET($A$1,MATCH($I2,$A$2:$A$4,0)+5*(MATCH(H2,{"甲班","乙班",
"丙班","丁班","戊班"},0)-1),MATCH(J$2,$B$1:$F$1,0))
(1) MATCH($I2,$A$2:$A$4,0)
查詢儲存格I2在儲存格A2:A4中的位置,傳回一個數值(本例傳回3)。
(2) 5*(MATCH(H2,{"甲班","乙班","丙班","丁班","戊班"},0)-1)
查詢儲存格H2(丙班)在{"甲班","乙班","丙班","丁班","戊班"}陣列中的位置,傳回一個數值(本例傳回3)。其中『5*』的用意是因為每個表格的位置相差 5 列。
(3) MATCH(J$2,$B$1:$F$1,0)
查詢儲存格J2在儲存格B1:F1中的位置,傳回一個數值(本例傳回2)。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)

3. 使用 INDEX+INDIRECT 函數配合定義名稱
先定義儲存格名稱。
(1) 選取儲存格A1:F4,按 Ctrl+F3 鍵,開啟「名稱管理員」對話框。
(2) 按下「新增」按鈕,名稱已自動帶入「甲班」,參照到已自動帶入「$A$1:$F$4」。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)
(3) 按下「確定」按鈕,即新增一個名稱定義:甲班。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)
(4)重覆步驟(1)至步驟(3),定義名稱:乙班、丙班、丁班、戊班。

儲存格K2:
公式:=INDEX(INDIRECT(H2),MATCH($I2,$A$2:$A$4,0)+1,MATCH
(J$2,$B$1:$F$1,0)+1)
(1) INDIRECT(H2)
利用 INDIRECT 函數將儲存格H2的內容轉換為一個儲存格範圍。(先前已定義名稱)
(2) MATCH($I2,$A$2:$A$4,0)+1
查詢儲存格I2在儲存格A2:A4中的位置,傳回一個數值(本例傳回3)。『+1』是因為定義名稱時是以儲存格A1為起始,多了這個儲存格,所以相對位置要多 1。
(3) MATCH(J$2,$B$1:$F$1,0)+1
查詢儲存格J2在儲存格B1:F1中的位置,傳回一個數值(本例傳回2)。『+1』是因為定義名稱時是以儲存格A1為起始,多了這個儲存格,所以相對位置要多 1。
Excel-多表格查詢(INDEX,MATCH,INDIRECT,OFFSET)

沒有留言:

張貼留言

檢視其他文章

好康東東