c++ vector查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍

这篇博客介绍了C++中的LOOKUP函数,揭示了其在查找功能上的广泛性和优越性,能实现VLOOKUP不能完成的任务。文章通过详细讲解LOOKUP函数的语法和多种应用场景,如单条件查找、逆向查找、多条件查找等,展示了LOOKUP的强大功能,并提供了实例操作步骤。
摘要由CSDN通过智能技术生成

VLOOKUP函数即使很强大,但是也有局限性,有些查找无法实现。今天,跟大家分享一个万能查找函数:LOOKUP。

VLOOKUP函数可以实现的查找LOOKUP也可以,VLOOKUP函数不能实现的查找LOOKUP依然可以,这就是它的与众不同之处。

下面跟大家讲讲LOOKUP函数的几种用法:

一、LOOKUP函数语法。

作用:从单行或单列或数组中查找一个值,条件是向后兼容性。分为向量形式和数组形式。

7724343bf4f5a1fbe7798b39c60b26dd.png

1、向量公式。

= LOOKUP(lookup_value,lookup_vector,[result_vector])。

= LOOKUP(查找值,查找区域,返回结果区域)。

2、数组公式。

= LOOKUP(lookup_value,array)。

= LOOKUP(查找值,数组)。

参数说明:

lookup_value:查找值。必需。可以是对单元格的引用、数字、文本、名称或逻辑值。

lookup_vector:查找区域。必需。只能是一行或一列。可以是对单元格引用、数字、文本、名称或逻辑值,文本不区分大小写。

result_vector:返回的结果区域。可选。只能是一行或一列,且与查找区域大小要相同。

array:行和列中值的集合。必需。可以是对单元格的引用、数字、文本、名称或逻辑值,文本不区分大小写。数组的值必须按升序排列。

注意:

(1)lookup函数查询方式,采用二分法查询。

(2)lookup_vector和array必须按升序排序,否则不能返回正确的结果。

(3)如果找不到查找值,lookup函数会返回小于或等于查找值的最大值。

(4)如果查找值小于查找区域的最小值,lookup函数会返回 #N/A 错误。

(5)如果数组的列数大于行数,则lookup函数会在第一行中查找要找的值。如果数组的行数大于列数,则lookup函数会在第一列中查找要找的值。

二、单条件查找:根据姓名查找测评总分。

要求:根据下图中C11单元格的姓名查找与之对应的测评总分。

方法一:使用lookup向量形式。

具体操作步骤如下:

1、首先,我们要查找的姓名所在的查找区域为B2:B10,所以先选中B2:B10单元格区域 -- 点击菜单栏的“数据”选项卡 -- 在“排序和筛选”工具组中点击“升序”按钮。

18bb910f8fd593ef541c7148c22de624.png

2、在C12单元格中输入公式“=LOOKUP(C11,B2:B10,E2:E10)”-- 按回车键即可。

9960ab2174ec79c74fc961330bf93b99.png

3、动图演示如下。

ebf2c7236001cc0c5e8247941c8c584a.gif

【公式解析】上述公式中的C11为查找值,B2:B10为查找区域,E2:E10为返回结果区域,并且查找区域按升序排列。

方法二:使用lookup数组形式。

具体操作步骤如下:

1、选中B2:E10单元格区域 -- 点击菜单栏的“数据”选项卡 -- 在“排序和筛选”工具组中点击“升序”按钮。

a739bdc62da41c8395877c1aaede57e5.png

2、在C12单元格中输入公式“=LOOKUP(C11,B2:E10)”-- 按回车键即可。

bb9ec9fc9905ff49c021105c47cf728e.png

3、动图演示如下。

6916b9fcb970c95cfb609f09429dbf37.gif

【公式解析】上述公式中C11为查找值,B2:E10为数组集合。查找之前必须先对数组进行升序排序。

三、单条件逆向查找:根据姓名查询学号。

要求:根据下图中C11单元格的姓名查找与之对应的学号。

具体操作步骤如下:

1、在C12单元格中输入公式“=LOOKUP(1,0/($B$2:$B$10=C11),$A$2:$A$10)”-- 按回车键即可。

29960be855c536c7d9a37af11b483036.png

2、动图演示如下。

b62e52dafc5ec0a486e32d47fb496faf.gif

【公式解析】($B$2:$B$10=C11)判断这个区域中是否等于“蔡晓丽”,如果是,返回TRUE,否则,返回FALSE。TRUE=1,FALSE=0。利用LOOKUP的特性(忽略错误值),所以用0除TRUE和FALSE,0/($B$2:$B$10=C11)满足条件返回0,不满足返回错误值。公式变成“=LOOKUP(1,0/{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;},$A$2:$A$10)”,可以看到以上公式的数组中只有一个0,其他都是错误值。二分法使得LOOKUP只能找到不大于查找值的最后一个数字,因此只能找到0,最后根据0的行位置(第8行)得到第3个参数对应位置的数据,即A8就是我们想要的结果。

四、多条件查找:根据姓名和系院查找专业。

要求:根据下图中C11单元格的姓名与C12单元格的系院查找与之对应的专业。

具体操作步骤如下:

1、选中C13单元格 -- 在编辑栏中输入公式“=LOOKUP(1,0/(($B$2:$B$10=C11)*($C$2:$C$10=C12)),$D$2:$D$10)”-- 按回车键即可。

d2c9a5dbf6ed871f4892af391dfb1165.png

2、动图演示如下。

b47d0237dec4447b978ac825d07e8aa9.gif

五、提取单元格内的数字。

要求:在B2:B4单元格中提取A2:A4单元格里面的数字。

具体操作步骤如下:

1、选中B2单元格 -- 在编辑栏中输入公式“=-LOOKUP(1,-LEFT(A2,ROW($1:$4)))”-- 按回车键回车。

c7a474fa98b17116900a816087b58f4c.png

2、鼠标移到B2单元格右下角出现“”字符号时往下拖动单元格至B5,即可提取A2:A5单元格区域里面的数字。

a615911dc51150650588ad35e450616f.png

3、动图演示如下。

cf81f305cd2f38bcda39fadfceb8dd75.gif

【公式解析】LEFT函数是从左往右开始提取,第2个参数使用的是数组形式,ROW($1:$4)相当于{1,2,3,4},所以公式“LEFT(A2,ROW($1:$4))”相当于{"4";"4个";"4个馒";"4个馒头"},在LEFT前面加上负号,就可以把其中的数字转为数值,文字变成错误值。-LEFT(A2,ROW($1:$4))就相当于{-4;#VALUE!;#VALUE!;#VALUE!}。错误值被LOOKUP忽略,所以公式就变成=-LOOKUP(1,{-4})。根据LOOKUP函数的二分法查找原理,当查找值大于查找区域的所有数据时,返回最后一个值,这里只有一个“-4”,所以返回“-4”,在LOOKUP前面加个负号,就变成4,也就是我们要提取的数字。

六、查询某一列中的最后一个数值。

要求:查找下图中A列的最后一个数值。

具体操作步骤如下:

1、选中B2单元格 -- 在编辑栏中输入公式“=LOOKUP(9E+307,A:A)”-- 按回车键即可。

4b38e28f51056461ce496e2d59f445df.png

2、动图演示如下。

25a519dbf5b8a5974758ba48e8a66de0.gif

【公式解析】9E+307是Excel中允许键入的最大数值,用它来做LOOKUP函数的查找值,可以返回某一行或某一列中的最后一个数值。

七、查询某一列中最后一个单元格的内容。

要求:查找下图中A列的最后一个数值。

具体操作步骤如下:

1、选中B2单元格 -- 在编辑栏中输入公式“=LOOKUP(1,0/(A:A<>""),A:A)”-- 按回车键即可。

99b276f78dfffdeaa8cf565cf8ec56c9.png

2、动图演示如下。

1ebd6aa76e0921533f5e02c4aa59d65e.gif

【公式解析】(A:A<>"")判断A列的值不等于空,如果等于空就返回。

八、查找某一列中最后一次出现的数据。

要求:查找下图中D列的姓名在A列区域中最后一次出现的打卡时间。

具体操作步骤如下:

1、选中E2单元格 -- 在编辑栏中输入公式“=LOOKUP(1,0/($A$2:$A$10=D2),$B$2:$B$10)”-- 按快捷键回车。

6a7cded65e14a1b6fab5aa4f8074087f.png

2、看到上图中返回的结果是一串小数,我们需要转换成日期格式。选中E2单元格 -- 点击鼠标右键 -- 选择“设置单元格格式”。

d547d76a5e449f49f43b7257dea39d5a.png

3、弹出“设置单元格格式”对话框 -- 在“数字”选项卡下点击“自定义”-- 在“类型”输入框中选择“yyyy/m/d h:mm:ss”-- 点击“确定”按钮。

a544907fe95750245350716e61358dab.png

4、可以看到那一串浮点数变成日期格式的文本。这就是我们用公式求出的最后一次打卡的时间。

517868714110a93c6d7a2cc52342969d.png

5、动图演示如下。

132567a9222de0c70bb0efd7eefeb441.gif

九、区间判断。

要求:判断下图中B列销售业绩对应的级别。级别判断标准为单元格区域E2:F6。

具体操作步骤如下:

1、选中C2单元格 -- 在编辑栏中输入公式“=LOOKUP(B2,$E$2:$F$6)”-- 按回车键回车。

bbc92e3a9115a803db828988f2a64000.png

2、鼠标移到C2单元格右下角并双击,即可求出C3:C6单元格区域的结果。

8c091b132df9cd3478c9b6e9697513af.png

3、动图演示如下。

0af4b853e50560e085a2d4d90701a55f.gif

以上就是我们工作中经常会用到的几种LOOKUP函数的用法,很多人都说一看就会,一做就不会。其实你只要记住下面这个套路就可以:

=LOOKUP(1,0/((条件1)*( 条件2)* ( 条件N)),目标区域或数组)。

希望你看完这篇文章的时候,可以帮忙转发点个赞,毕竟这么详细的教程,网上真的找不到第2篇!

861b0a7c21a6385ec1b91956aeff0e37.png

想学更多的Word、Excel等办公技巧吗?欢迎关注小编哦,定期更新实用技巧供大家学习。

您的赞赏、关注、转发、评论、点赞和收藏都是对小编的鼓励和支持,谢谢您!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值