ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 【函数解读系列】之解读INDIRECT函数

【函数解读系列】之解读INDIRECT函数

作者:绿色风 分类: 时间:2022-08-17 浏览:127
楼主
gouweicao78
【声明】请尊重原创版权!未经允许,不得转载!

【帮助文件】解读

前半句还好理解,后半句有点儿拗口了,其实大可不必在此深究这一句话的意思。个人觉得下面其他内容更重要。

【链接】
关于A1、R1C1引用样式,请参考:什么是单元格引用如何理解 R1C1-样式的引用?


解读INDIRECT函数.rar
2楼
gouweicao78
【示例文件】
通读完毕,其实看来INDIRECT很简单,就两个参数,一个是代表引用的字符串,一个是选择引用样式。
首先,我们选择熟悉的A1引用样式来解读,即默认使用一个参数或者第2参数为TRUE或非0数值:


Ref在函数参数中一般指单元格引用;text则一般指字符串。这句话中,最重要的是告诉了我们INDIRECT的第一参数尽管可以变化多端,但最终必须是单元格引用
如图:A1单元格输入"B2",B2单元格输入"C3",C3单元格输入"你找到这里了吗?"

 
【用法1】第1参数直接就是表示某单元格区域的字符串,比如:
示例1:=INDIRECT("A1")——返回对A1单元格的引用,得到"B2"
示例2:=INDIRECT("A1:C2")——返回对A1:C2单元格区域的引用。

【用法2】第1参数是引用,间接指向某单元格区域,比如:
=INDIRECT(A1)
因为A1单元格值"B2",那么这个公式就是=INDIRECT("B2"),最终返回的是对B2单元格引用,得到"C3";
再绕远点
=INDIRECT(INDIRECT(A1))
那么这个公式第1步变为:=INDIRECT(INDIRECT("B2"));第2步变为=INDIRECT("C3"),因而最终返回对C3单元格的引用,得到"你找的这里了吗?"

【用法3】第1参数是定义的名称,注意,必须是引用单元格或者可以表示单元格引用的字符的名称,比如:
按CTRL+F3,定义名称X="A1"
=INDIRECT(X)——返回对A1单元格的引用;
在B1输入"X",然后用=INDIRECT(B1)得到#REF!错误,或者=INDIRECT("X")也同样是错误,这是因为"X"是一个单纯的字符,不是合法的单元格引用,而INDIRECT(X)中的X是一个名称,它的值是字符"A1",而"A1"是可以转换为合法单元格引用的文本。
定义名称Y=OFFSET($A$1,,,3,3)
则=INDIRECT(Y)  得到{"C3",#REF!,#REF!;#REF!,"你找到这里了吗?",#REF!;#REF!,#REF!,#REF!},即把名称Y中对A1:C3的值分别代入,再逐一返回其对应的引用。不是合法单元格引用就返回错误。
通过上面3中用法,基本可以理解INDIRECT函数对第1参数的要求。

3楼
gouweicao78
2楼通过对INDIRECT函数第1参数的示例讲解了简单的单元格引用。对与R1C1引用样式,INDIRECT函数的第2参数应使用FALSE或0或简写为逗号,比如=INDIRECT("Sheet1!RC",FALSE)、=INDIRECT("Sheet1!RC",0)、=INDIRECT("Sheet1!RC",)——都可以引用Sheet1表的相同位置(比如公式在C2,就引用Sheet1表的C2单元格)

在此基础上,继续拓展,讲解一下这个函数的几个典型应用:
一、跨工作表、簿引用
=INDIRECT("Sheet1!A1")——引用Sheet1表的A1单元格。
工作表名是变量,利用文本合并符:
=INDIRECT(A1&"!A1"),然后在A1单元格中输入工作表名称,比如"Sheet1"
同理,可以跨工作簿引用,比如=INDIRECT("
4楼
牛奶加咖啡
坐沙发学习?
5楼
shengyulon
谢谢分享,最喜欢“函数解读”,“公式解析”。。。。

6楼
eve_saunter
版主好强大;
如果我每天能弄明白一个专题的话,就乐死了;
昨天的LOOKUP/VLOOKUP还在晕糊呢
7楼
jchwylmh
多谢版主的e文!
8楼
江南
可惜是2007版 还用不习惯
9楼
江南
07好占内存啊   5200+,2G的内存都有延迟现象。。。
10楼
zjylsjwz
见别人用过,自己没弄过这个
11楼
opelwang
感谢分享。下载学习了。
12楼
yukaiwz
先下载,再慢慢地消化,谢谢分享!
13楼
zijing833
收下学习了!3KS
14楼
shz88
怎么收藏啊!
15楼
yuezc
学到了indirect的用法。
16楼
yncxxmj
讲的非常仔细。
17楼
abcxinfuzhu
楼主真是高手。慢慢消化。谢谢
18楼
bensonlei
It's useful to understand this function. Thanks!
19楼
guideming
学习中

多谢!



20楼
jackycheng001
看了一遍,基本理解,楼主挺细心的,
21楼
yzcyzc1023
谢谢版主,认真听讲。
22楼
wangqilong1980
谢谢分享,收藏学习
23楼
YANXIA0508
下载学习,谢谢!
24楼
YANXIA0508
版主,怎么附件下载看到的全是乱码呀,急,急!
25楼
xing_xingyou
如果我每天能弄明白一个专题的话,就乐死了
26楼
pzr313316
學習中!高人!
27楼
gouweicao78


乱码?这个附件是Excel 2007启用宏的工作簿格式,必须2007或2010版才可以打开,并需要启用宏(因为使用了宏表函数)。
28楼
xyh9999
好好学习!
29楼
jcsxjwcxxp
谢谢
30楼
LoveJinLee
看了版主的“累计进度值”计算,很巧妙
但是,我比较疑惑公式:=INDIRECT(sht-1&"!RC",0)+A3
这里为什么用RC模式返回,而且不用指定返回相应表的B2,就可以找到B2
很疑惑
用RC这种写法,公式写在哪就找哪个相应单元格的原理是什么?


另外不懂“防止删除单元格产生错误”这个地方
31楼
gouweicao78
【声明】请尊重原创版权!未经允许,不得转载!

【帮助文件】解读

前半句还好理解,后半句有点儿拗口了,其实大可不必在此深究这一句话的意思。个人觉得下面其他内容更重要。

【链接】
关于A1、R1C1引用样式,请参考:什么是单元格引用如何理解 R1C1-样式的引用?


解读INDIRECT函数.rar
32楼
gouweicao78
【示例文件】
通读完毕,其实看来INDIRECT很简单,就两个参数,一个是代表引用的字符串,一个是选择引用样式。
首先,我们选择熟悉的A1引用样式来解读,即默认使用一个参数或者第2参数为TRUE或非0数值:


Ref在函数参数中一般指单元格引用;text则一般指字符串。这句话中,最重要的是告诉了我们INDIRECT的第一参数尽管可以变化多端,但最终必须是单元格引用
如图:A1单元格输入"B2",B2单元格输入"C3",C3单元格输入"你找到这里了吗?"

 
【用法1】第1参数直接就是表示某单元格区域的字符串,比如:
示例1:=INDIRECT("A1")——返回对A1单元格的引用,得到"B2"
示例2:=INDIRECT("A1:C2")——返回对A1:C2单元格区域的引用。

【用法2】第1参数是引用,间接指向某单元格区域,比如:
=INDIRECT(A1)
因为A1单元格值"B2",那么这个公式就是=INDIRECT("B2"),最终返回的是对B2单元格引用,得到"C3";
再绕远点
=INDIRECT(INDIRECT(A1))
那么这个公式第1步变为:=INDIRECT(INDIRECT("B2"));第2步变为=INDIRECT("C3"),因而最终返回对C3单元格的引用,得到"你找的这里了吗?"

【用法3】第1参数是定义的名称,注意,必须是引用单元格或者可以表示单元格引用的字符的名称,比如:
按CTRL+F3,定义名称X="A1"
=INDIRECT(X)——返回对A1单元格的引用;
在B1输入"X",然后用=INDIRECT(B1)得到#REF!错误,或者=INDIRECT("X")也同样是错误,这是因为"X"是一个单纯的字符,不是合法的单元格引用,而INDIRECT(X)中的X是一个名称,它的值是字符"A1",而"A1"是可以转换为合法单元格引用的文本。
定义名称Y=OFFSET($A$1,,,3,3)
则=INDIRECT(Y)  得到{"C3",#REF!,#REF!;#REF!,"你找到这里了吗?",#REF!;#REF!,#REF!,#REF!},即把名称Y中对A1:C3的值分别代入,再逐一返回其对应的引用。不是合法单元格引用就返回错误。
通过上面3中用法,基本可以理解INDIRECT函数对第1参数的要求。

33楼
gouweicao78
2楼通过对INDIRECT函数第1参数的示例讲解了简单的单元格引用。对与R1C1引用样式,INDIRECT函数的第2参数应使用FALSE或0或简写为逗号,比如=INDIRECT("Sheet1!RC",FALSE)、=INDIRECT("Sheet1!RC",0)、=INDIRECT("Sheet1!RC",)——都可以引用Sheet1表的相同位置(比如公式在C2,就引用Sheet1表的C2单元格)

在此基础上,继续拓展,讲解一下这个函数的几个典型应用:
一、跨工作表、簿引用
=INDIRECT("Sheet1!A1")——引用Sheet1表的A1单元格。
工作表名是变量,利用文本合并符:
=INDIRECT(A1&"!A1"),然后在A1单元格中输入工作表名称,比如"Sheet1"
同理,可以跨工作簿引用,比如=INDIRECT("
34楼
牛奶加咖啡
坐沙发学习?
35楼
shengyulon
谢谢分享,最喜欢“函数解读”,“公式解析”。。。。

36楼
eve_saunter
版主好强大;
如果我每天能弄明白一个专题的话,就乐死了;
昨天的LOOKUP/VLOOKUP还在晕糊呢
37楼
jchwylmh
多谢版主的e文!
38楼
江南
可惜是2007版 还用不习惯
39楼
江南
07好占内存啊   5200+,2G的内存都有延迟现象。。。
40楼
zjylsjwz
见别人用过,自己没弄过这个
41楼
tsoyzm
还是不懂,晕
42楼
shwaizv
支持一下**呵呵
43楼
那时毛驴
今天的任务就是这个啦,必须拿下这个函数
44楼
wuliaors
好高级的技法,不过我觉得更重要的是这样的一个学习方法,一定要好好总结一下
45楼
wuliaors
英文注解:
Returns the reference specified by a text string. References are immediately evaluated to display their contents. Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.
When you create a formula that refers to a cell, the reference to the cell will be updated if: (1) the cell is moved by using the Cut command to delete the cell or (2) the cell is moved because rows or columns are inserted or deleted. If you always want the formula to refer to the same cell regardless of whether the row above the cell is deleted or the cell is moved, use the INDIRECT worksheet function. For example, if you always want to refer to cell A10, use the following syntax:
=INDIRECT("A10")
看了E文后,可能会容易了解了,尤其是最后一句:如果你想总是引用A10单元格,而不受删除、剪切、插入或移走而引起的变化的影响,请使用indirect。
46楼
feisky1219

47楼
tsoyzm
喜欢看楼主这样的文章
48楼
409474185
多谢版主的E文,我用函数的时间很短,所以对您介绍的indircet函数的前部分要充分了解,后部分的特殊用法等相关函数都学了后再详研,谢谢了!
49楼
好大一棵树王玉
感觉很好,还需要再练习一下!看一看是不是真的学会了!
50楼
HIMYM
学习了!
51楼
新菜鸟
迷糊中~~~
52楼
hg10381
有时候会转不过弯
53楼
jianzhanchou
不错,好好看看
54楼
icenotcool


55楼
wise


学习
56楼
lrlxxqxa

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap