Indirect函数是比较常见的引用类函数,与其功能相仿的函数包括Offset函数、Index函数等等。与Offset函数所不同的在于,Offset函数是基于目标基准位置的偏移引用,而Indirect函数则是通过构造单元格地址的文本书写方式来对单元格区域直接进行引用。
在Excel中单元格的引用方式包括A1样式和R1C1样式,因此Indirect函数在构造引用字符串时,也可以使用上述两种样式的文本字符串,但需要在第二参数中使用不同的参数值进行标识区别。
A1样式和R1C1样式两种不同引用方式的来源是由于单元格地址表示方式的不同:如果用字母来表示列标,数字来表示行号,就是A1引用样式;如果用Rn表示第n行,用Cn表示第n列,就是R1C1引用样式。
由于可以构造文本形式的单元格引用地址,因此利用文本连接符&就可以构造“常量”+“变量”、”静态“+”动态“相结合的单元格引用方式。
例如=INDIRECT("A2:A"&COUNTA(D:D))中,"A2:A"的部分就是静态地址,其中的列标A和行号2都是常量,而COUNTA(D:D)部分形成了第二个行号的动态引用。整个公式的引用方式就等同于“A2:An”,其中的n是变量,由D列的非空单元格数量所决定。
基于这样的特性,Indirect函数常见的用途包括:
1,引用地址事先未知,需要通过其他运算得到部分引用元素的引用
2,可以动态更新的区域引用(常用于生成下拉菜单的数据有效性序列)
3,表名称有数字规律的多表引用(三维引用)
4,构造生成指定的数字序列或数组
5,与Text函数相结合,通过一组数值生成相应的一组R1C1式引用
以下图片点击后选择“查看原图”,可以查看放大以后的原图: