INDIRECT函数的妙用
INDIRECT函数介绍
功能
返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。
语法
INDIRECT(ref_text, [a1])
参数
Ref_text 必需。对单元格的引用。
a1 可选。一个逻辑值,用于指定包含在单元格 ref_text 中的引用的类型。
如果 a1为 TRUE或省略,ref_text被解释为 A1-样式的引用。
如果 a1为 FALSE,则将 ref_text解释为 R1C1样式的引用。
解释:
A1-样式,就是我们平时使用的行号用数字,列标用大写字母表示单元格的方式:
R1C1样式,是行各列都使用数字的表示方式,我们一般不用。R代表ROW(行),C代表COLUMN(列),如果需要用这种方式表示单元格,需要自己设置:
R1C1样式很少用。
INDIRECT应用举例引用单元格
1、公式:=INDIRECT(B2)
含义:返回B2单元格的引用。
B2单元格的值是A2,所以返回A2单元格的值“ Office”。
2、公式:=INDIRECT(“B2”)
含义:返回B2的值。
总结:
INDIRECT(单元格)与NDIRECT(“单元格”),虽然只是参数差了一对双引号,但结果截然不同:
前者,是引用的单元格的地址,该单元格内的地址指向谁,结果就返回谁。比如以上示例,是引用B2单元格内的A2地址指向的值“ Office”。
后者,是引用的单元格内的值。
引用名称
典型的应用是制作多级联动菜单,如下图:
公式:=INDIRECT(I2)
详细介绍参考:
Excel036 多级联动菜单,规范数据输入
多工作表合并
如下图:
公式:=INDIRECT(B$1&”!B”&ROW())
B$1:指B1单元格的值,此值刚好与工作表“1月”的名称相同。使用混合引用B$1,公式向下填充时,行号不变,永远是第一行的值;公式向右填充时,列标自动改变,改变为表“1月”“2月”“3月”……的名称;
“!B”&ROW():
!是表与单元格的分界标志,公式向下拖动到哪一行,ROW()都是当前行的行号。
与SUMPRODUCT配合使用
与SUMPRODUCT函数配合使用,可以实现汇总项顺序不一致的多工作表汇总。
如下图:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$12)&”月!$B$2:$B$37″),汇总!B2,INDIRECT(ROW($1:$12)&”月!$c$2:$c$37″)))
详细解释请参考文章:
Excel SUM——求和项排序相同的多工作表数据汇总;SUMIF+INDIRECT——求和项排序不同的多工作表数据汇总
与VLOOKUP配合使用
与vlookup函数配合使用,可以实现一对多查找。
如下图:
公式:
=VLOOKUP($B$12&ROW(B1),IF({1,0},$B$2:$B$9&COUNTIF(INDIRECT(“b2:b”&ROW($2:$9)),$B$12),$C$2:$C$9),2,0)
INDIRECT函数对工作簿引用
对工作薄引用的正确写法是:
=INDIRECT(“[工作簿名.xls]工作表表名!单元格地址”)
INDIRECT函数对另一个工作簿的引用时,被引用胡工作簿必须被打开,如果没有打开,函数 INDIRECT 返回错误值 #REF!。