黄金搭档
用 Excel 工作的朋友,一般都知道大名鼎鼎的 vlookup 函数,它是查询大王,美中不足的是它的第三个参数即列序数要数一数,数的方法是在查询区域当中从第一列数起,比如从B列数到F列是5,那就填5,若从B列到BC列,那就不好数了。所以,处理大型数据时,高手有时候对 vlookup 函数弃而不用,用一对黄金搭档:index 和 match 。
先说一下 index 函数:
index原意是索引,众所周知,通过索引我们可以进行快速查找,因而Excel引入此函数。index 函数的必选参数就两个:index(数组, 行序号) 。数组怎么理解?当我们选择名字列的三个单元格,这三个单元格的内容就组成了一个数组,表达如下:{"张三", "李四", "Lily“}。也就是说,参数一可以选择一列的部分或全部,Excel会自动构建数组,数组内容则由各个单元格的值组成。第二个参数是行序号。比如我们要找第四行的东东,第二个参数就填写4。这里要注意,行是指Excel的自然行,而不是我们自己编写的序号行。
以下index公式将返回B列第四行的内容:=index(B:B, 4)
问题是,我们要是知道要找的东西在哪一行了,还找什么?对,第几行是不确定的,index的第二个参数会根据查找的内容动态变化,因此,我们要借助另一个函数 match 来帮忙。
match 是匹配的意思,这里不是火柴额。match函数需要三个参数:
match(查找值, 查找区域, 匹配类型)
查找值好理解,比如我们要找的是张三;查找区域,就是原始数据里有张三的那一列;匹配类型为 0 是精确查找。下面公式将返回张三所在的B列的行序号:
=match("张三",B:B,0)
是的,match 函数返回查找值所在的行序号,它正好给 index 函数提供了可能动态变化的行号,嵌套起来使用,我们就可以完美查询我们需要的东东。
例如,我们要查找张三的职务,姓名在B列,职务在H列:
=index(H:H, match("张三",B:B,0))
务必注意的是,因为职务在 H列,所以 index 的第一个参数是 H:H;而在 match 函数中,张三这个名字是记录在 B列 的,所以查找区域是B:B。
和 VLOOKUP 函数比,这对搭档仅需要列名,不需要去数目标列是在选择区域的初始列的第几列,用起来更为便捷。
这个两个命令的嵌套使用真好,对数据量大的查询太方便了{:4_204:} 对猫来说有点深{:5_117:}慢慢学习{:4_190:} 大猫咪 发表于 2021-6-28 02:39
对猫来说有点深 慢慢学习
单一的函数好理解,多个联合使用的确有些困难。不过,每一个函数都理解透了,就都可以慢慢消化。本帖中,match函数被视作是一个参数,它为index提供行序号。 马黑黑 发表于 2021-6-28 12:36
单一的函数好理解,多个联合使用的确有些困难。不过,每一个函数都理解透了,就都可以慢慢消化。本帖中, ...
嗯嗯 谢谢老黑指点{:4_190:} 中午好{:4_191:} 中午好 下午好 加林森 发表于 2021-6-28 15:58
下午好
晚上好 马黑黑 发表于 2021-6-28 18:24
晚上好
上来啦{:4_191:} 加林森 发表于 2021-6-28 18:30
上来啦
准备开喝 马黑黑 发表于 2021-6-28 19:01
准备开喝
今晚整多少了? 常用excel不需函数~~ 杨柳青 发表于 2021-6-28 22:39
常用excel不需函数~~
用不上就不用 加林森 发表于 2021-6-28 21:36
今晚整多少了?
不多不多 马黑黑 发表于 2021-6-28 23:41
不多不多
不多是多少?晕我玩啊? 加林森 发表于 2021-6-29 00:05
不多是多少?晕我玩啊?
岂敢岂敢 马黑黑 发表于 2021-6-29 13:31
岂敢岂敢
半斤? 加林森 发表于 2021-6-29 19:56
半斤?
八两 马黑黑 发表于 2021-6-29 20:52
八两
乱七八糟{:4_202:} 加林森 发表于 2021-6-29 21:27
乱七八糟
喝多了