ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6832|回复: 22

[分享] 逆向查询那些事儿(基础入门)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-7 07:43 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 祝洪忠- 于 2015-7-7 07:46 编辑

在日常的Excel函数应用中,最常用的就是查询类函数,比如说根据工号查询姓名、根据学生查询成绩、根据男猪脚查询女一号等等。
说到查询类函数,大家对VLOOKUP一定不会陌生,这可是人见人爱花见花开的函数。下面这个图中,就是根据工号查询姓名的典型应用:
G2单元格公式为
=VLOOKUP(F2,A2:D10,2,0)
意思就是以F2单元格的工号作为查询值,以A2:D10为查找区域,在首列中找到与F2单元格相同的工号,然后返回这个区域中与之对应的第二列(也就是姓名所在列)的姓名。

如果我们以姓名作为查找值,需要在这个区域中查找和姓名对应的工号,该如何使用公式呢?因为VLOOKUP函数要求查询值必须处于查询区域的首列,再使用普通方法就无法完成要求了,今天就和大家说说,关于逆向查询的几种方法。

方法一
使用IF函数重新构建数组。
G2使用公式为:
=VLOOKUP(F2,IF({1,0},B2:B10,A2:A10),2,0)
这个公式的用法在之前的内容中咱们曾经讲过,就是用IF({1,0},B2:B10,A2:A10),返回一个姓名在前,工号在后的多行两列的内存数组,使其符合VLOOKUP函数的查询值处于查询区域首列的条件,再用VLOOKUP查询即可。

方法二
使用choose函数重新构建数组。
G2使用公式为:
=VLOOKUP(F2,CHOOSE({1,2},B2:B10,A2:A10),2,0)
这个公式的原理也是重新构建一个内存数组,使其符合VLOOKUP函数的查询值处于查询区域首列的条件。

方法三
INDEX+MATCH结合使用。
G2使用公式为:
=INDEX(A2:A10,MATCH(F2,B2:B10,))
公式首先使用MATCH函数返回F2单元格姓名在B2:B10单元格中的相对位置6,也就是这个区域中所处第几行。再以此作为INDEX函数的索引值,从A2:A10单元格区域中返回对应位置的内容。这个公式是最常用的查询公式之一,看似繁琐,实际查询应用时,由于其组合灵活,可以完成从左至右、从右到左、从下到上、从上到下等多个方向的查询。

方法四
所向披靡的LOOKUP函数。
G2使用公式为:
=LOOKUP(1,0/(F2=B2:B10),A2:A10)
这是非常经典的LOOKUP用法,首先用F2=B2:B10得到一组逻辑值,再用0除以这些逻辑值,得到由0和错误值组成的内存数组。
再用1作为查询值,在内存数组中进行查询。如果 LOOKUP 函数找不到查询值,则它与查询区域中小于或等于查询值的最大值匹配,因此是以最后一个0进行匹配,并返回A2:A10中相同位置的值。

如果有多条符合条件的结果,前三个公式都是返回首个满足条件的值,而第四个公式则是返回最后一个满足条件的值,这一点大家在使用时还需要特别注意。

好了,今天的分享就到这里,祝大家开开心心。


评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-7-7 08:38 | 显示全部楼层
温故而知新,感谢祝老师的总结!

TA的精华主题

TA的得分主题

发表于 2015-7-7 10:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-7 15:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
了然,楼主一生平安

TA的精华主题

TA的得分主题

发表于 2015-7-24 09:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-8-1 22:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-8-3 20:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-8-4 13:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
温故而知新,多谢老祝。其实,我是先学会index+match,之后才学会的vlookup,呵呵。

TA的精华主题

TA的得分主题

发表于 2015-8-4 17:05 | 显示全部楼层
只看明白了INDEX+MATCH的原理,其它还是不明白。谢谢楼主了!

TA的精华主题

TA的得分主题

发表于 2015-8-5 15:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-4 13:53 , Processed in 0.045718 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表