前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >INDIRECT函数导言

INDIRECT函数导言

作者头像
但老师
发布2022-03-22 17:55:47
6380
发布2022-03-22 17:55:47
举报
文章被收录于专栏:但老师的数据分析

很多人无法理解这个函数,我开始也一样。但是学了VBA之后,我发现这尼玛就是个VBA函数,就像SUMPRODUCT函数是一个伪装成普通函数的数组函数一样。

说个题外话,数组函数,很多人也不理解,主要是因为脑中没有数组的概念。我也是学了VBA之后才理解数组这一概念的。当然,程序员可以忽略我这一段。

闲话少叙,言归正传,回到INDIRECT函数。正如它的英文含义,它是"不直接的",与DIRECT,直接的,是一对反义词。之前学这个函数的时候,看到有人说它是"隔山打牛",我觉得还是挺贴切的,就是太武侠了点。INDIRECT函数是将传入的文本内容识别为特定格式的对象,最后输出区域对象的函数。

这是我的定义,我们来一个个剖析加粗字体的意思。

1 传入的是文本内容。看到这,用过的人可能会想,我明明写过INDIRECT(A1),你却说传入的是文本内容。别急,假设你在A1单元格填写了B1,B1单元格的内容是金拱门然后C1单元格输入了=INDIRECT(A1)。你能预料最后的结果吗?最后它会返回金拱门。我们来探究一下里面的传导过程

1.1 传入单元格A1

1.2 单元格A1将自身转化为单元格中的值,也就是B1

1.3 B1这个值被自动文本化,变成了"B1"(你可以在公式中用F9这个按键验证这一点)

1.4 INDIRECT函数检测到参数B1,然后整体输出B1单元格。形象点,就是B1==INDIRECT("B1")

1.5 B1单元格的内容是金拱门,所以最后显示的结果是金拱门

2 特定格式。什么叫特定格式?就是Excel 对于工作表行号列标的表示方法。Excel 有两种表示工作表行列的方式,一种叫A1方式,一种叫R1C1方式。默认的是A1方式,所以你打开工作表,会发现在这个表格矩阵中,横坐标是字母ABC。。。,纵坐标是12345...所以当你传输到INDIRECT 参数中的单元格,其单元格值是符合这种字母+数字的格式的时候,它将被识别为这个格式所代表的单元格,例如B1

3 输出区域对象。在上面的例子中,最后INDIRECT 返回的其实是B1单元格而不是其中的值,但是呢,既然是单元格,怎么才能在工作表中表示单元格呢???可能微软工程师觉得和你们解释这个太累了,所以直接显示了单元格的值给你们。跳过了这个逻辑,有些人就一直很难理解这个函数。在很多嵌套函数中,用INDIRECT 的时候你就会发现这一特性。

最后帮助你们从VBA角度理解一下。在VBA中,Range表示单元格对象,注意,是对象而不是单元格中的值。Range表示单元格区域有几种写法,其中一种是Range("文本")。只要文本中的值是符合我们以上所说的字母+数字的特定格式,它就会被认定为单元格。这也正印证了这句话:如果它走起来像鸭子,叫起来像鸭子,那它就是鸭子。蚁人2也有这句话😳可能编剧是程序员转行的吧。

所以Range表示单元格可以这么写

Range("B1")

Range("B"&1)

Range("B"&"1")

反正不管你怎么组合,最后里面的参数是文本格式的🦆就行了

这是一篇INDIRECT 函数导言,也是VBA的Range 对象入门,如果能帮助你更加理解了它哪怕一丢丢,我也会很荣幸能帮到你。

手机码字真不容易,这次必须求比心❤

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 但老师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容识别
内容识别(Content Recognition,CR)是腾讯云数据万象推出的对图片内容进行识别、理解的服务,集成腾讯云 AI 的多种强大功能,对存储在腾讯云对象存储 COS 的数据提供图片标签、图片修复、二维码识别、语音识别、质量评估等增值服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档