函数INDIRECT用于返回由文本字符串指定的引用。
=INDIRECT("A2")
将返回公式所在工作表A2单元格的内容,也可以写成:
=INDIRECT("A"&2)
=INDIRECT("A"&2)
如果要引用隔壁工作表的数据,添加相应的工作表名即可:
=INDIRECT("ABC!A2")
技术细节1:工作表名和单元格之间要用感叹号隔开,【工作表!单元格】
再尝试着把INDIRECT第一参数设计成以下格式:
=INDIRECT("ABC"&"!"&"A2")
=INDIRECT("ABC"&"!A2")
=INDIRECT("ABC!"&"A"&"2")
……
都可以成功引用ABC表格上A2单元格的数据,很明显,它们的共同点是第一参数运算的结果都是“ABC!A2”.
技术细节2: 第一参数的表达式可以自由设计,只要最终结果满足【工作表!单元格】的格式。
创建4个工作表,名称分别为:【ABC】, 【AB.C】, 【AB C】, 【AB-C】
同样用INDIRECT引用数据,后两个会返回错误值:
=INDIRECT("ABC!A2")
=INDIRECT("AB.C!A2")
=INDIRECT("AB C!A2")
=INDIRECT("AB-C!A2")
究其原因是工作表名中使用了特殊字符,部分特殊字符导致INDIRECT引用失败。
解决方法是将工作表名称置于单引号【’’】中:
=INDIRECT("'AB C'!A2")
同时上述测试表明并非所有特殊字符都存在这个问题,比如【AB.C】就不需要。即便在官方指导中也没有说明具体哪些需要,哪些不需要。
为了提高正确率,建议统统加上单引号,因为没有特殊字符的情况下加上单引号并不会有负面作用。
技术细节3:工作表名置于单引号内。
INDIRECT存在的意义更多的是引用存放在单元格中的地址作为第一参数,达到引用该地址对应数据的目的。
在这种隔山打牛式的应用中,以上技术细节同样适用。