关于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 需要加""? 展开
---------------------以上为前提-------------------------
问题一:在工作表汇总 单元格a1 中输入公式='1'!B3,返回值为6;输入=INDIRECT(ROW()&"!b3"),返回值为6;输入=INDIRECT('1'!B3),返回值就为#REF!,为什么~?
问题二:为什么=INDIRECT(ROW()&"!b3")中ROW()不加"",难道ROW()返回值属性为字符属性?
问题三:为什么INDIRECT(ROW()&"!b3")中 !b3 需要加""? 展开
4个回答
展开全部
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的参数。
问题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的参数。
展开全部
=INDIRECT('1'!B3) 这个相当于是=INDIRECT(6), 6并不是单元格地址,所以返回错误
ROW()&"!b3" 这个加了&连接符,返回的是一个文本,ROW()本身加引号的话,只会当做一个文本,而不会返回行号
ROW()&"!b3" 此处的!b3是作为文本引号,不加的话,excel会无法识别感叹号
ROW()&"!b3" 这个加了&连接符,返回的是一个文本,ROW()本身加引号的话,只会当做一个文本,而不会返回行号
ROW()&"!b3" 此处的!b3是作为文本引号,不加的话,excel会无法识别感叹号
追问
感谢解答,收益良多。。。
按照你的解释,我把=INDIRECT('1'!B3)改为=INDIRECT(“'1'!B3”)已经可以得到6了;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
三个问题都一样,就是indirect函数的参数问题
indirect函数的参数为文本,如果写成=INDIRECT('1'!B3),就表示indirect函数的参数为'1'!B3单元格中的数据,而不是'1'!B3本身
ROW()&"!b3" 中ROW() 是一个函数,不能加“”,ROW()返回值为数值,但后边跟了一个&,&是文本链接运算符,运算后得到的是文本,&后边的!b3必须得是文本格式,所以加双引号
indirect函数的参数为文本,如果写成=INDIRECT('1'!B3),就表示indirect函数的参数为'1'!B3单元格中的数据,而不是'1'!B3本身
ROW()&"!b3" 中ROW() 是一个函数,不能加“”,ROW()返回值为数值,但后边跟了一个&,&是文本链接运算符,运算后得到的是文本,&后边的!b3必须得是文本格式,所以加双引号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的表名是1,而不是:'1',那单引号是系统自动添加的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |