Redian新闻
>
VLOOKUP靠边站,这才是Excel中最牛的查找方法?(建议收藏)

VLOOKUP靠边站,这才是Excel中最牛的查找方法?(建议收藏)

公众号新闻


作者:小爽
编辑:竺兰、萌萌



大家好,我是在研究数据结构的小爽~


每当公司有大型的活动或者会议时,都会选择到大展厅进行演示。小李作为公司人力资源部的一名员工,需要对展厅的座位情况提前进行安排。


这不,他就设计了一张下图这样的表格。表中标明了每个人对应的座位情况(假设姓名不重复)



不料,当他沾沾自喜地欣赏这张表的时候,领导突然发消息,问:有个叫危平的客户坐在哪里?


他从表格的左上角开始,用目光扫视表格。过了两三秒,回复领导,坐在 1 排 7 号的位置。



没想到领导又问,还有那个我们部门的小爽安排坐哪了?


他又开始从左上角一个一个地进行扫描查找,还没等他找到,领导突然走到他旁边,一脸不可思议地望着他,拍了一下他的肩膀,说道:


我们人力资源部用 Excel 的频率很高的呀。这样,你不要一个个进行查找,试着用 Excel,借助工具进行查找,晚点再找我汇报一下。



小李开始思索。


用函数查找位置,一般是 Match 函数。它可以查找一行或者一列的相对位置。但是,查找区域不是一行或者一列,那想要既同时查找行,又同时查找列。Match 好像……做不到啊 !


于是,他向我求助。


接下来,就和小李一起来看看我是怎么做到的吧!


数组判断



在 B2 单元格输入如下公式 :


=INDIRECT(  TEXT(    MAX((D5:S20=A2)*(ROW(6:21)/1%+COLUMN(D:S))),    "R0C00"    ),   FALSE   )



PS : 除了 Office365、Office2021 之外,其他版本需要在输入公式后,按数组三键【Ctrl+Shift+Enter】返回结果。


下面简单解释一下这个函数公式:


👉将位置区域的行列标范围,转换成对应数值


返回区域 : D6:S21

D6:S21 为 1 排 1 号到 6 排 16 号形成的区域。

6 到 21 为这个区域的行标范围。

D 到 S 列为这个区域的列范围。



判断区域中行列标范围对应的数值。


利用 Row 函数构造这个区域的行标数值范围。



利用 Column 函数,构造列标数值范围。



👉将行列 汇总成一个区域,里面每个数值包含对应返回区域的行列信息


区域 ① 

=(ROW(6:21))/1%+COLUMN(D:S)


数据的行列信息我们已经得到了。那么后面就需要将行列数汇总起来。


由于列数最多是两位。所以我们可以将行数扩大 100 倍然后加上列数。

扩大行数(*100,或者/1% 都表示扩大 100 倍)


如下图:



加上列数。


这里我们就得到一个区域,里面每个数值中都包含返回区域对应的行列信息。



比如 604,就是第 6 行第 4 列(D 列),也就是 D6。


上面的区域信息,就对应下图中的数据位置。



👉查找值跟查找区域直接判断


区域② : 

=(D5:S20=A2)

如下图 D5:S20 为对应的查找区域。这个区域跟返回区域 D6:S21,区域大小一致。



我们通过单元格区域,直接进行判断。


查找区域=查找值,如果返回结果为 true 的话,证明查找值就在对应查找区域的某个位置上。如下图 :


D5:S20 为姓名区域,也就是查找区域。

A2 单元格为查找值 ,也就是小爽

D5:S20=A2 判断小爽在哪。



👉区域① * 区域②,聚合后得到查找值对应的行列数值


如下图,两者利用*号进行判断。公式:

=((ROW(6:21))/1%+COLUMN(D:S))*(D5:S20=A2)



利用 max/min/sum 将区域变成为一个值。(这里用了 max 函数


结果为 2113,表示小爽的位置在第 21 行第 13 列的位置。



👉构造单元格,返回对应位置的值


利用 Text 函数,将行列数(2113)变成单元格地址格式 R21C13。



PS : 单元格地址有两种表达方式 : A1 方式和 R1C1 方式。由于 A1 方式中字母构造比较复杂,所以这里我们用 R1C1 方式进行构造。


利用 Indirect 函数,返回对应单元格区域,第二参数为 false,表示我们采取了 R1C1 方式。


这时结果为 6 排 10 号,也就是查找值对应的位置。



到这里,函数的方法就解释完了。



小李在小爽电脑旁边,若有所思。


我看着他,笑着跟他说,我再教你一招,在 Excel 中就有一个查找功能,你知道快捷键是什么嘛?


小李摸了摸头,这个我知道,是【CTRL+F】。

VBA 扩展



针对位置的查找,Excel 中就有一个查找功能。


如下图,通过查找功能,我们一下子就能找到小爽在哪里。


而且小爽单元格下面的信息,就是我们想要的位置内容。



这样是不是就比重头一个个肉眼查找快多了鸭。我边说边望向小李。


小李红着脸,点了点头。



如果不想每次需要查找的时候都要【CTRL+F】,这时 VBA 就派上用场了。


PS : Excel 文件需保存为 xlsm 格式。


由于查找后,返回的是一个 Range 对象,所以利用 Offset 函数向下偏移 1 个单元格,就是我们想要的数据结果,顺着这个思路,我们写了一个 Function 函数过程。


VBA 代码如下。


findwz 函数有两个参数,第一个参数是查找区域,第二个参数是查找值。


Public Function findwz(Rng As Range, rngCell As Range) As String    Dim rngResult As Range    With Rng        Set rngCell = .Find(What:=rngCell.Value, After:=.Cells(1), _                LookIn:=xlValues, LookAt:=xlWhole)        If Not rngCell Is Nothing Then             Set rngResult = rngCell.Offset(1, 0)             findwz = rngResult.Value        Else             findwz = "不存在"        End If    End With    Set rngCell = Nothing    Set rngResult = Nothing    Set Rng = NothingEnd Function


利用刚刚编写的自定义函数,我们来解决下面的问题。


单击【开发工具】选项卡,找到【Visual Basic】命令,单击即可进入 VBA 编辑器,如下图所示:



在菜单中鼠标右键,单击【插入】,在弹出的下一级菜单中选择【模块】,单击即可插入 1 个模块,如下图所示:



将代码复制粘贴到模块中。



此时,这个函数就可以直接使用啦。结果也正确。



小李惊呼:原来还可以这样啊。


于是他屁颠屁颠拿着文件找领导汇报了。




本文讲解的是多区域的查找匹配方法。主要介绍两种思路。


传统函数做法:


① 获取返回区域的行列信息区域,里面每个数值中包含对应返回区域的行列信息。


② 通过查找值与查找区域的判断,获取查找值在查找区域中的位置。


将 ① * ② 获得位置数据,并进行聚合。


最后利用 text 函数构造 R1C1 格式,利用 Indirect 函数返回由文本字符串指定的单元格引用。


VBA 做法:


利用查找功能获取查找值的位置;进行向下偏移一个单元格;Function 过程编写函数。


查找问题本身不复杂,复杂的原因主要是小李设计的表格,是一个展示表,而不是一个规范的数据结构表,所以造成需要查找时,难度大幅度增加了。


如果将表格转换成我们熟悉的一维表,可以直接用Vlookup快速查找,也就不用这么麻烦啦~


表格设计得好,Excel 难题少一半。


如果你想学习更多表格设计技巧,那我推荐你参加秋叶 Excel3 天 集训营》,大神带你学习表格飞速排版、数据高效整理、图表美化设计……!!和志同道合的小伙伴一起交流进步~


秋叶 Excel 3 天 集训营》

课程原价 99 元 

但只要你是秋叶 Excel 的读者

就能限时 1 元秒杀!!


仅需 3 天

你就可能成为 Excel 高手!

赶紧扫码抢课吧!!

优惠名额有限,先到先得!

现在扫码报名

还能免费领《35 个函数使用手册》!


   *广告




关注公众号【秋叶 Excel】
回复关键词礼包
还能免费领办公神器
Office 模板和免商字体!
↓↓↓

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
丰富自己的4个好习惯(建议收藏)华为的差旅费报销流程(建议收藏)用Vlookup太笨,筛选太慢!这才是No.1的Excel表格核对技巧荷花定律,竹子定律,金蝉定律(建议收藏)三斤四两五花肉,六桶七杯八色油人民日报推荐:孩子必读的100本经典好书(建议收藏)一个人开始变强大的25种表现(建议收藏)用PQ太难,手动太慢,这才是最牛x的Excel统计工具!临床补液:常用 8 种液体优劣总结(建议收藏)当代女孩科学补血指南.PDF(建议收藏)1分钟搞定数据汇总!这3个Excel求和方法不学错亿(建议收藏)乳腺炎,真有这么恐怖吗?轻松几步告别乳腺炎(建议收藏)SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出发现一个程序员接私活神器!(建议收藏)美国投行MD痛批中国留学生:连Vlookup都不会,下周别来了!南十字星下的超生游击队【会计实操】财务人手一份!财务Vlookup函数模板(500套带公式).xls产后屁股大、大腿粗、假胯宽?这3个方法让你快速恢复!(建议收藏)奶茶靠边站,这才是最好喝的夏天解暑饮品,清热去火,好爽!2023下半年:能持续升值的人,都有这种能力(建议收藏)7月21中伏,10大禁忌千万别犯,尤其是第4个(建议收藏)38岁的VLOOKUP要光荣退休了?这个新函数好用到爆哭!!别只知道VLOOKUP!它才是查询函数NO.1!Excel中唯一无法被替代的函数,90%的人都不知道!5051 血壮山河之武汉会战 鏖战幕府山 20男女戴翡翠的规矩,不是迷信,请认真记住!!(建议收藏)中国高僧200句智慧禅语(建议收藏)最牛的爬树技巧爬最牛的树!你想不想学?人民日报推荐:2023下半年,自我增值的9个好习惯(建议收藏)郭碧婷获得“继承权”,向佐靠边站,她才不会离婚...梧桐台湾的利器之一:PHL-191“箱火” 转刘亚洲言敬酒令(建议收藏)再见,VLOOKUP!全行业必备的Excel实操大全,请低调使用!不用花一分钱!那些创造力惊人的孩子,他们的父母都做对了什么?(建议收藏)
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。