INDIRECT函数返回由文本字符串指定的引用,通常在需更改公式中单元格的引用而不更改公式本身时使用。INDIRECT函数的语法形式为:
INDIRECT(ref_text,a1)
其中,ref_text为引用的文本,支持的文本类型包括:单元格的地址如“C2”、已命名的单元格名称,这些文本字符可以来自单元格、直接的参数输入或者使用字符串拼接构成。如ref_text不是合法的单元格引用,函数将返回错误值“#REF!”。同时,如ref_text是对另一个工作簿的引用(外部引用),则该工作簿必须被打开。
A1为可选的逻辑值,指明包含在单元格ref_text中的引用的类型。a1为1(TRUE,或省略)时代表a1样式引用,a1为0(FALSE)时代表R1C1样式引用。
以下图中的函数“=INDIRECT(C18)”为例,参数C18单元格内包含目标单元格的地址文本“$D$18”,因此该函数最终将返回D18单元格的数据,该函数等价于“=INDIRECT(″D18″)”,即将目标单元格的地址字符串直接作为参数传入,而不再使用中间引用。
INDIRECT函数的参数可以是字符串拼接而成的单元格地址,如“=INDIRECT(″D″&C21)”,将列标“D”和C21单元格中包含的数值21拼接成了单元格地址文本“D21”,从而获得D21单元格中的数据即62(见图4-19和图4-20)。
(www.xing528.com)
图4-19 INDIRECT函数示例
图4-20 INDIRECT函数参数
由于INDIRECT函数的参数是字符文本,并将其转换为单元格或区域地址,这一特性使得INDIRECT函数具有较大的应用灵活性,可以用于一些较复杂的应用。
例如,在公式中直接使用引用的情况下,添加或删除行列会导致公式引用地址的自动变化,如一个将A1∶A10区域求和的公式:“=SUM($A$1∶$A$10)”,如果用户在其中插入一行,会导致公式自动变为“=SUM($A$1∶$A$11)”,如在A列左侧插入一列则导致公式自动变为“=SUM($B$1∶$B$10)”,如不希望Excel进行上述自动调整,可使用INDIRECT函数将其转换为:“=SUM(INDIRECT(″A1∶A10″))”,该公式使用的是文本字符而非区域引用,因此不受区域内行列增减的影响,同时INDIRECT的特性决定了该公式仍可执行正常计算。
另外,INDIRECT函数还经常和ADDRESS结合使用,鉴于ADDRESS函数可以返回单元格地址文本,该文本可以进一步成为INDIRECT函数的参数。例如,“=ADDRESS(5,6)”返回字符串“$F$5”,将其传给INDIRECT函数即“=INDIRECT(ADDRESS(5,6))”可获得单元格F5的数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。