Excel 如何实现有下拉菜单的跨表数据汇总并查询
问题情境
汇总查询表”部门费用“如下,其中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(行号, 列号, [引用类型],[引用样式], [引用工作表])
【参数】
- 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参数, 则不使用工作表名称, 并且该函数返回的地址引用当前工作表上的单元格。
需要保留本文链接地址:http://www.excelxx.com/xuexixinde/12366.html