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)


分享到:


相關文章: