ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhang81524

[已解决] indirect()不能引用动态范围?请教高手?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-10-30 20:31 | 显示全部楼层

AAA=offset(h1,0,0,1,1)

AAA虽然是对h1的引用,但是其返回的却是单元格的值,如果H1="H2",indirect(AAA)返回的是h2的值。而在indirect("AAA")中AAA并没有被处理成名称,只是一串字符而已,并且不是有效的单元格引用的格式。

TA的精华主题

TA的得分主题

发表于 2004-10-30 20:51 | 显示全部楼层
以下是引用apolloh在2004-10-30 20:31:00的发言:

AAA=offset(h1,0,0,1,1)

AAA虽然是对h1的引用,但是其返回的却是单元格的值,如果H1="H2",indirect(AAA)返回的是h2的值。而在indirect("AAA")中AAA并没有被处理成名称,只是一串字符而已,并且不是有效的单元格引用的格式。

但是大家讨论的是indirect($H$1)的情况!为何AAA=$H$1,就可以,目前你讨论的和大家不同的!

TA的精华主题

TA的得分主题

发表于 2004-10-30 23:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用apolloh在2004-10-30 20:31:00的发言:

AAA=offset(h1,0,0,1,1)

AAA虽然是对h1的引用,但是其返回的却是单元格的值,如果H1="H2",indirect(AAA)返回的是h2的值。而在indirect("AAA")中AAA并没有被处理成名称,只是一串字符而已,并且不是有效的单元格引用的格式。

你的理解有误,INDIRECT("AAA")就是表示名称AAA所指的引用,而INDIRECT(AAA)表示名称AAA所指位置的值所定义的引用(要多了一层)。 我在11楼中指的含义是: 如果分别定义AAA=H1和AAA=OFFSET(H1,0,0,1,1)这2种情况,对INDIRECT("AAA")的影响是不同的。

TA的精华主题

TA的得分主题

发表于 2004-10-31 18:44 | 显示全部楼层
以下是引用chenjun在2004-10-30 23:10:00的发言:

你的理解有误,INDIRECT("AAA")就是表示名称AAA所指的引用,而INDIRECT(AAA)表示名称AAA所指位置的值所定义的引用(要多了一层)。 我在11楼中指的含义是: 如果分别定义AAA=H1和AAA=OFFSET(H1,0,0,1,1)这2种情况,对INDIRECT("AAA")的影响是不同的。

谢谢版主指正,我弄明白了

[em04]

TA的精华主题

TA的得分主题

发表于 2005-9-27 13:44 | 显示全部楼层

不知道这样说,大家是不是对INDIRECT的两大条件理解了呢?

帮助中早已说明,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编辑过]

ydfsgeTv.rar

1.94 KB, 下载次数: 154

不知道这样说,大家是不是对INDIRECT的两大条件理解了呢?

s9JVyTe5.rar

2.24 KB, 下载次数: 120

不知道这样说,大家是不是对INDIRECT的两大条件理解了呢?

fhYrdobm.rar

2.94 KB, 下载次数: 119

不知道这样说,大家是不是对INDIRECT的两大条件理解了呢?

TA的精华主题

TA的得分主题

发表于 2006-4-21 15:56 | 显示全部楼层

哈哈——原来早就讨论过了啊,我这边的理解是:

http://club.excelhome.net/viewthread.php?tid=159686

第16楼——indirect函数对定义名称的再引用。

即:Indirect("A")——其中A为定义名称,如果要返回正确的单元格区域(多个),则对A的要求就是A必须是对单元格区域的直接引用

我的理解仅对了一部分,还是楼上的说的对。
[此贴子已经被作者于2006-5-16 18:02:59编辑过]

TA的精华主题

TA的得分主题

发表于 2007-2-18 18:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-10-11 12:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
斑竹 严重推荐,所以先报到,然后吃肉,哈哈

TA的精华主题

TA的得分主题

发表于 2008-1-8 15:19 | 显示全部楼层

请问可以用什么其他方法来解决啊

TA的精华主题

TA的得分主题

发表于 2008-8-28 17:36 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 04:07 , Processed in 0.040447 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表