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)


分享到:


相關文章: