ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] [函数用法讨论系列21]关于Indirect函数引用工作表名的书写方式及对定义名称的再引用

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-4 09:37 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:INDIRECT
题目的由来: 经常看到这样的公式——=indirect("'"&A2&"'!B3")表示引用以A2单元格为工作表名的B3单元格。而大多数情况下,=indirect(A2&"!B3")——也可以达到同样的效果,那么究竟在什么情况下这样的引用要在工作表名的前后加上英文的单引号呢?
讨论的目的: 1、了解工作表名的命名规则; 2、了解工作表名与Indirect函数书写方式的关系。
[续]关于Indirect对定义名称再引用的分析——请看16楼 2006-4-11
关于Inidrect函数的用法,有chenjun版主的精华帖可以学习。见http://club.excelhome.net/dispbbs.asp?BoardID=3&ID=31546——第1个就是。 本帖仅作为该函数在书写方式和对定义名称引用方面的补充,并未涉及应用部分。
[此贴子已经被作者于2006-4-19 8:24:04编辑过]
补充内容 (2017-10-29 08:56): 在ExcelHome技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-4-4 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

与工作表名称的组成有关系,如果工作表名称中含有空格字符时使用“=INDIRECT("'"&A2&"'!B3")”能得出正确结果,而用=INDIRECT(A2&"!B3")得出的是错误值。

这个问题曾在精华帖中关于indirect函数的用法解释中曾经论述过。得出的结论是工作表名称中是否含有空格,如果含有空格就需要加上单引号,如果没有空格就不需要加单引号。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 10:34 | 显示全部楼层

to hbhfgh4310

如果没有空格就不需要加单引号

不完全哦!呵呵。顺便,给个链接吧。

TA的精华主题

TA的得分主题

发表于 2006-4-4 10:41 | 显示全部楼层

再有:

公式=indirect(b2)与=indirect("b2")的区别在于:前者是引用的B2单元格内的地址引用的单元格的内容,后者是B2单元格内文本的引用。你可以试试在两个单元格中分别输入上述两公式,再在B2单元格输入a1、A1单元格输入12,看看结果。indirect(b2)=12,indirect("b2")=a1。

不好意思,以前下载的文件没有保留链接,你搜一搜,我可以先把原文件传上来。 64tPOL7f.rar (30.25 KB, 下载次数: 2067)
[此贴子已经被作者于2006-4-4 10:48:34编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-4 11:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 11:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

呵呵,hbhfgh4310兄4楼偏题了哦。(谢谢四海飘零兄给的链接)

我的意思是工作表名书写的方式,即Indirect跨表引用时需要和不需要在所引用的工作表名称前后加上英文的单引号的问题,即是否需要用indirect("'"&A1&"'!B3")或者indirect("'工作表名'!B3")这种书写方式。

我测试了一番,结果如下:

1、Indirect引用带有工作表名的数据时(听起来别扭,就是跨表引用,但如果钻牛角尖要在引用本表也冠上工作表名就……)

是否需要在“代表工作表名称的字符”前后加英文单引号,是与所引用工作表的名称有关的;

2、工作表命名规则。双击工作表标签,改名输入?,跳出警告并由此得知,工作表标签字符串长度不得超过31,且不得包含以下字符

:/?*[] \'
——事实上除了?号,其他几个字符根本就输入不了。(后2个是警告没有的,但输入不了)

3、根据以上2点,那么,在工作表命名规则内的Indirect引用,什么情况一定要加单引号呢?

2楼说了,含有空格——一定要加。键盘上的符号中

还有,工作表名含有以下字符时,也必须加:

$%`~!@#^&()+=,|";{}
若无声明,包含中英文2种状态下的符号。

以下情况则不需要加:

。——“”、_¥

另:英文的句号(小数点)在单独使用的时候必须加,在结合字符窜使用时不必加。

目前发现,在用不在“要加单引号”范围内的特殊符号比如【】ˇ『』︽︾等可不用加,有个﹖——code为43380的特殊符号里的问号可以用于工作表名(测试不多,不过相信一般大家不会用这些东西来命名吧,嘿嘿!) 所以,结论:[glow=255,blue,2]1、要么形成习惯在工作表命名时尽量不要有空格和符号,这样可以不怕indirect引用忘记加单引号括起来。 2、要么形成习惯所有indirect带工作表名引用时都用单引号将代表工作表名的字符串括起来。[/glow]
[此贴子已经被作者于2006-4-4 15:30:52编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-4 12:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

都已经习惯,不管是否有空格.都加'号.这样出错的几率比较小.

继续学习中........

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-5 10:06 | 显示全部楼层

to 7楼:呵呵这个习惯不错,我倒是偏向第一个习惯,即命名工作表时注意,这样写公式就省了不少字符。

其中有一个很有趣的:“英文的句号(小数点)在单独使用的时候必须加,在结合字符串使用时不必加。”比如工作表名称只有一个小数点,则indirect引用时需要用'.' 而如果是1.2(经常有人用这个表示日期)则不需要。

测试的时候,不一定要用indirect代入,直接在另一个sheet某单元格输入=号,然后点击测试表的A1单元格,如果需要加2个单引号的,返回的公式就自动加上了比如(='sheet 1'!A1——sheet和1之间有空格),而不需要加的,则返回的也没有单引号(比如普通的=sheet1!A1)

谢谢apoloh版主收录函数讨论帖。
[此贴子已经被作者于2006-4-5 10:06:57编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-5 11:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

楼上得讲的真是鞭辟入里、丝丝入扣!又学了一招,谢谢了!

TA的精华主题

TA的得分主题

发表于 2006-4-5 11:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用[I]dumps[/I]在2006-4-4 12:36:37的发言:[BR]

都已经习惯,不管是否有空格.都加'号.这样出错的几率比较小.

继续学习中........

和你一样,我没有去分析一直这样用!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 05:07 , Processed in 0.049452 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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