ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 发现一个问题,indirect函数居然不能用数组,还是我错了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-4 07:53 | 显示全部楼层
本帖最后由 wangjguo44 于 2012-2-4 07:59 编辑
blzyj 发表于 2012-2-3 22:12
还是没搞明白,字符串跟文本有什么区别啊,能否再说明一下,谢谢

不是“字符串”跟“文本”,而是“字符串”跟“文本数组”的区别
根据帮助:
INDIRECT  
返回由文本字符串指定的引用。
语法
INDIRECT(ref_text,a1)
Ref_text     为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。
•如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。
A1     为一逻辑值,指明包含在单元格 ref_text 中的引用的类型。
•如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。
•如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。
因此依我陋见,第一参数应该呈现类似$A$2、"B"&$A$5、"A"&A1&":A"&A5 这样的作为单元格(区域)引用的文本字符串,而楼主的"A" & A1:A5却是{"A1";"A2";"A3";"A4";"A5"},是一组文本数组,并非合法的单元格的引用,所以出错。
纠正的办法,正如2楼所写:要么(通过N函数)“降维”,要么改写成合法的单元格的引用文本字符串"A"&A1&":A"&A5样子

TA的精华主题

TA的得分主题

发表于 2012-2-4 08:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wangjguo44 于 2012-2-4 09:13 编辑

此外,楼主是对本表的的引用,A1:A5是{1;2;3;4;5},能得到楼主的期望值{1;2;3;4;5},如果A1:A5是另外一些值,结果就变了,这一点也要引起注意的,例如假定A1:A5是{1;3;5;6;2},则=N(INDIRECT("A"&A1:A5))得到的是:{1;5;2;0;3},而=INDIRECT("A"&A1&":A"&A5)得到的却又是另一个结果:{1;3},对这两种不同结果细细品味,我想,会对indirect有更进一步理解。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-4 09:52 | 显示全部楼层
wangjguo44 发表于 2012-2-4 08:18
此外,楼主是对本表的的引用,A1:A5是{1;2;3;4;5},能得到楼主的期望值{1;2;3;4;5},如果A1:A5是另外一些值 ...

讲得太好了,昨天晚上想了很久还是没有明白,今天再看看。十分感谢

TA的精华主题

TA的得分主题

发表于 2012-2-4 10:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很好,谢谢 wangjguo44详细解说!{:soso_e113:}

TA的精华主题

TA的得分主题

发表于 2012-2-4 21:04 | 显示全部楼层
wangjguo44是释疑大师,耐性也好,难得的好人。

TA的精华主题

TA的得分主题

发表于 2012-2-4 21:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
但是如果在楼主的公式中按F9的话就会得到正确结果。

TA的精华主题

TA的得分主题

发表于 2012-2-5 15:50 | 显示全部楼层
是个很好的帖子,我这几天也一直在学习indirect函数,看了这个帖子,有很多顿悟的地方。

TA的精华主题

TA的得分主题

发表于 2013-9-5 11:15 | 显示全部楼层
Bodhidharma 发表于 2013-9-4 23:40
耶…INDIRECT({"A1";"A2";"A3";"A4";"A5"})返回的是多維引用,相當於OFFSET(A1,{0;1;2;3;4}, ...

这个才是正解,监察的那个解释让我纠结了好久。

TA的精华主题

TA的得分主题

发表于 2013-9-5 10:27 | 显示全部楼层
哦,很热闹呀,占位关注一下

TA的精华主题

TA的得分主题

发表于 2013-9-4 23:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wangjguo44 发表于 2012-2-4 07:53
不是“字符串”跟“文本”,而是“字符串”跟“文本数组”的区别
根据帮助:
INDIRECT  
{"A1";"A2";"A3";"A4";"A5"},是一组文本数组,并非合法的单元格的引用,所以出错。
耶…INDIRECT({"A1";"A2";"A3";"A4";"A5"})返回的是多維引用,相當於OFFSET(A1,{0;1;2;3;4},)
之所以出錯,是因為多維引用是「飛到天上的東西」,沒有辦法直接在單元格上顯示(因此才要用N使之「落地」)
但是要說這並非合法的單元格引用,好像也怪怪的…

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 02:12 , Processed in 0.038158 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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