在 Excel 中有时会用到多表格的查询(如下图),你可以使用各种查询的公式,例如:INDEX、VLOOKUP、OFFSET等,本例以3种不同的做法来练习在多个表格中查询,也要看看如何简化公式。前提是多个表格的格式要是一致的。
若要在单元格H2:J2中使用了3 个条件来搜寻(概念如下图),可以看成是 3D 的搜寻。
【公式设计与解析】
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 的交集。
公式中利用 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)。