关于excel工作表数据引用 '1'!B3、INDIRECT(ROW()&"!b3")、INDIRECT('1'!B3)上的疑惑!

工作表是以汇总、1、2、3、4。。。。。。30命名的,其中工作表1中单元格b3=6---------------------以上为前提------------------... 工作表是以汇总、1、2、3、4。。。。。。30命名的,其中 工作表1 中 单元格b3=6
---------------------以上为前提-------------------------
问题一:在工作表汇总 单元格a1 中输入公式='1'!B3,返回值为6;输入=INDIRECT(ROW()&"!b3"),返回值为6;输入=INDIRECT('1'!B3),返回值就为#REF!,为什么~?
问题二:为什么=INDIRECT(ROW()&"!b3")中ROW()不加"",难道ROW()返回值属性为字符属性?
问题三:为什么INDIRECT(ROW()&"!b3")中 !b3 需要加""?
展开
 我来答
朱荟非
2012-05-20 · TA获得超过1万个赞
知道大有可为答主
回答量:5408
采纳率:81%
帮助的人:2284万
展开全部
INDIRECT的作用是取得文本描述的引用。那么也就是说,参数必须是文本形式。

问题1:
由于参数不是文本形式,所以INDIRECT('1'!B3)不成立。

问题2:
这里不能在ROW()前后加引号,=INDIRECT("ROW()"&"!b3"),这样就把ROW()本身作为
一个文本(锁死了),而不是变量。
需要说明的是,数字是一种比较特殊的数据类型。他既可以作为数值参与运算,某些时候又可以作为文本型数字来使用。比如这里的ROW()&"!b3",由于&是文本连字符,那么1&"!b3"和"1"&"!b3"是一样的。
换一个例子,加入A1="B",B1=3,那么INDIRECT(a1&b1)=INDIRECT("b"&3)=b3.这个是成立的。

问题3:
"!b3"是引用文本对象的一部分,需要加引号。
INDIRECT(ROW()&"!b3")=INDIRECT(1&"!b3")=INDIRECT("1!b3")=1!b3
由于row()取得的是一个引用结果,它先与&"!b3"运算,在一起作为INDIRECT的参数。
ExcelVBA学习
2012-05-20 · TA获得超过958个赞
知道小有建树答主
回答量:1189
采纳率:0%
帮助的人:783万
展开全部
=INDIRECT('1'!B3) 这个相当于是=INDIRECT(6), 6并不是单元格地址,所以返回错误
ROW()&"!b3" 这个加了&连接符,返回的是一个文本,ROW()本身加引号的话,只会当做一个文本,而不会返回行号
ROW()&"!b3" 此处的!b3是作为文本引号,不加的话,excel会无法识别感叹号
追问
感谢解答,收益良多。。。
按照你的解释,我把=INDIRECT('1'!B3)改为=INDIRECT(“'1'!B3”)已经可以得到6了;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chx_darkelf
2012-05-20 · TA获得超过940个赞
知道小有建树答主
回答量:655
采纳率:40%
帮助的人:284万
展开全部
三个问题都一样,就是indirect函数的参数问题
indirect函数的参数为文本,如果写成=INDIRECT('1'!B3),就表示indirect函数的参数为'1'!B3单元格中的数据,而不是'1'!B3本身
ROW()&"!b3" 中ROW() 是一个函数,不能加“”,ROW()返回值为数值,但后边跟了一个&,&是文本链接运算符,运算后得到的是文本,&后边的!b3必须得是文本格式,所以加双引号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友24ef169fc
2012-05-20 · TA获得超过9082个赞
知道大有可为答主
回答量:2.2万
采纳率:63%
帮助的人:4366万
展开全部
因为你的表名是1,而不是:'1',那单引号是系统自动添加的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式