问题情境
汇总查询表”部门费用“如下,其中A2单元格是下拉菜单,内容是12个月份 。查询表”部门费用“中12个月份的数据来源于同一工作薄中不同的12个以月份命名的工作表:
汇总并查询效果如下:
公式实现
在B3单元格输入公式:“=INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4))“,按Enter键结束计算,并将公式向右向下填充,可得结果 。如下图:
公式解析
公式为“=INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4))“,其中:ROW(2:2):该部分公式返回值为2,即所取数据来源于第2行,当公式向下填充时 , 本部分返回值随公式填充而改变 , 每向下填充一行,返回值加1,公式向右填充,返回值不变;
COLUMN(B:B):该部分公式返回值为2,即所取数据来源于第2列,当公式向右填充时,本部分返回值随公式填充而改变,每向右填充一列,返回值加1 , 公式向下填充,返回值不变;
ADDRESS(ROW(2:2),COLUMN(B:B),4):该部分公式返回值为B2,即所取数据来源于B2单元格,公式每下向填充一行 , 行数加1,每向右填充一列,列数加1;
$A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4):该部分公式返回值为A2单元格指向的工作表 , 即1月的B2单元格 。由于月份均在A2单元格,所以此单元格绝对引用,不随公式的填充而改变;
INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4)):该部分公式返回A2向的工作表的B2单元格数据 。
函数解析
附函数ADDRESS的用法:【功能】
ADDRESS 函数,根据指定行号和列号获得工作表中的某个单元格的地址 。例如 , ADDRESS(2,3) 返回 $C$2 。再例如,ADDRESS(77,300) 返回 $KN$77 。可以使用其他函数(如 ROW 和 COLUMN 函数)为ADDRESS 函数提供行号和列号参数 。
【语法】
ADDRESS(row_num, column_num, [abs_num],[a1], [sheet_text])
【中文语法】
ADDRESS(行号, 列号, [引用类型],[引用样式], [引用工作表])
【Excel | 用下拉菜单查询分表数据,如此简单】【参数】
- row_num 必需 。一个数值,指定要在单元格引用中使用的行号 。
- column_num 必需 。一个数值,指定要在单元格引用中使用的列号 。
- abs_num 可选 。一个数值 , 指定要返回的引用类型 。不同数字对应的引用类型如下表
- a1 可选 。一个逻辑值,指定 A1 或 R1C1 引用样式 。在 A1 样式中,列和行将分别按字母和数字顺序添加标签 。在 R1C1 引用样式中 , 列和行均按数字顺序添加标签 。如果参数 A1 为 TRUE 或被省略 , 则 ADDRESS 函数返回 A1 样式引用;如果为 FALSE,则 ADDRESS 函数返回 R1C1 样式引用 。
- sheet_text 可选 。一个文本值, 指定要用作外部引用的工作表的名称 。例如, 公式=ADDRESS (1, 1,,,"Sheet2")返回Sheet2! $A $1 。如果省略了sheet_text参数, 则不使用工作表名称, 并且该函数返回的地址引用当前工作表上的单元格 。
