帮助中早已说明,INDIRECT(ref_text,a1)返回由文本字符串指定的引用。
偶的理解是:INDIRECT有两个条件,首先它的第一参数ref_text的返回值是“文本”,并且这个文本的内容是个“引用”,其次这个“引用”得与第二参数a1所需的引用形式一致,才能返回这个引用(注意不是返回引用的值,此时公式可理解为“=引用”),否则返回#REF!。
如apolloh版主所说,AAA=offset(h1,0,0,1,1),AAA虽然是对h1的引用,但是其返回的却是单元格的值,如果H1="H2",那indirect(AAA)与indirect("H2")是一样的,结果的是h2的值,如果H1中的值不是文本引用,而是“1”、“ABC”等值,则结果的是#REF!。同理indirect("AAA")虽是文本,但AAA不是引用,所以返回的也是#REF!。
还有一种是多层运算,如果h1中的值也是一个名称,并且这个名称的值是一个“文本引用”的话,则可用返回引用,看这一个例子,h1="ABC",名称AAA=offset(h1,0,0,1,1),ABC=Sheet1!$H$2,则indirect(AAA)的结果是h2的值,要注意ABC是绝对引用,如果ABC用的是相对引用,那得到的结果将会是0,因为公式无法确定到底是哪一个引用。
总之,无论第一参数ref_text经过多少层的计算,只要结果是“文本引用”且与第二参数a1对应的话,INDIRECT结果就不会是#REF!。
所以楼主的结论“不能用表示名称(这个名称是通过计算来返回一个引用的)的字符串用于INDIRECT函数中来返回引用。”存在片面性的错误,因为当这个名称通过计算后返回的值是“文本引用”且与第二参数a1对应的话,就可以用了。
以上只是个人理解,如有不对,请指正,请看下面实例。
qYvpuVon.rar
(2.98 KB, 下载次数: 313)
[此贴子已经被作者于2005-9-27 18:55:38编辑过] |