想到为这个函数记一笔是因为在论坛上看到一个帖子,发帖人的意思是说得出一个用字符串表达的单元格的引用(reference),比如“A2”,怎么样根据这个字符串得出所表示的单元格处的值,也就是A2单元格的值。
至于发贴人为什么会用字符串来表示单元格的引用,这且不用管他。有可能某个查询得出A栏,另一个查询得出第二行,然后把这个两个结果连接起来就构成字符串“A2”了。在Excel 中输入公式时,A2 这样的写法会被认为是单元格的引用,并转换成该单元格保存的值用在函数中;但“A2”这样的写法不会被认为是单元格的引用,而是当成字符串值处理。所以我们需要一个函数,能把“A2”这样的写法理解为是单元格引用的一种表达方式。
我再举个例子,比如我的Excel 表单的A栏保存了以下数据:
A | |
1 | B5 |
2 | C6 |
3 | sheet2!D3 |
4 | sheet3!A7 |
这些数据的目的就是保存一些单元格的引用,如果你想看到这些引用处的值呢?就用INDIRECT函数吧。
语法 INDIRECT(ref_text,a1)
在B1单元格输入“=INDIRECT(A1)”,显示的值不是字符串“B5”,而是B5单元格处的值。这个函数从名字上看就挺像指针的,返回的不是指针本身的值,而是指针值所指地址处的值。
不过请注意,=INDIRECT("A1") 返回的就是字符串“B5”了。大家看出这两种写法的不同了吗?
跟这个函数功能相反的是ADDRESS函数,把单元格的地址返回成字符串。
语法 ADDRESS(row_num,column_num,abs_num,a1,sheet_text)