
疑难杂症
但也因为它的参数灵活多变,而容易让人产生混淆,而无法熟练使用这个excel高手爱不释手的引用函数。
下面我们就来详细地讲解indirect函数的语法和应用场景。
首先来看看它的语法:

=indirect(单元格引用,样式)
结果会返回单元格引用所指向的数据内容。
单元格引用又有两种典型的形式,即单元格地址引用和单元格地址文本引用。
indirect("A1")
单元格引用样式有两种,一种是R1C1样式,一种是A1样式
R1C1样式的最大特点就是表格中的行和列序号都以数字来表示。
在下图中,我们要使用indirect函数来引用B10单元格的数据,公式该怎么写?

=INDIRECT("B10")
=INDIRECT(A18)
=INDIRECT(B10)
来看看它们各自的区别和结果。

从上图的结果可以看到,公式1和公式2返回了正确的结果,公式3却出现了错误。
我们逐个公式来分析。
=INDIRECT("B10")
这个公式只是用了第1参数,省略了第2参数的样式,则默认为A1样式。
这个参数使用了双引号引用,如上文所讲,它属于单元格地址文本引用,在indirect函数中执行一个固定的规则,即将直接返回引用单元格的内容。也就是返回B10单元格的数据内容。
单元格地址文本引用将直接引用单元格的内容。
=INDIRECT(A18)
A18B10=INDIRECT(A18)=INDIRECT("B10")
我们可以在公式编辑栏中按下F9来解析参数的结果:

INDIRECT(A18)=INDIRECT("B10")INDIRECT("B10")INDIRECT(A18)
当indirect函数的参数是一个单元格地址,且这个单元格的内容是另一个单元格的地址,其结果将返回单元格内容中单元格地址所对应的数据值。
=INDIRECT(B10)
再回到上面的截图,公式结果计算出错,那这是不是代表当indirect函数没有使用双引号引用单元格地址,且单元格的内容也没有包含另一个单元格地址,它的计算结果将出现错误。
indirect函数的第1参数有两个典型的特点,第一是通过双引号引用单元格,将直接返回该单元格的数据值;第二是引用的单元格其内容是一个单元格地址,那么将返回该地址指向的数据值。
正因为它第1参数的两种用法,使得indirect函数灵活多变,能够应用到许多特殊的场景中。
下面我们再看看它的第二参数的表达:

省略则默认为A1样式。
通过indirect函数语法和表达式的理解,我们抽取3种比较常见的应用场景来介绍。
一、返回最大销量对应的产品品类
购买专栏解锁剩余47%