在Excel中,提供了多个可以用来进行数据匹配和查找的函数:HLOOKUP、INDEX、LOOKUP、MATCH和VLOOKUP等。其中使用最广的就是VLOOKUP,这篇文章就从VLOOKUP开始,介绍几种常见的匹配和查找数据的方式。

文章分成两部分:

第一部分介绍,VLOOKUP的基本使用 和 替代方法;

第二部分介绍,VLOOKUP无法实现的一些功能:多列匹配,向左查询匹配,匹配时区分大小写,返回最后一个匹配的数据而不是第一个。

第二部分会使用到数组公式(有兴趣的可以先点击查看)。

VLOOKUP的基本使用

先看一个示例,在B2:D9区域有一张员工薪资表,G2单元格可以输入员工的First Name,希望可以在G3单元格查找出相应员工的具体薪资。

这时候可以使用VLOOKUP函数来进行查找匹配。

使用之前先简单回顾一下VLOOKUP函数语法:

VLOOKUP (value, table, col_index,[range_lookup])

参数:

  • value -查找的值(需要在下面参数table的第一列中查找)。

  • table - 查找的区域。

  • col_index - 返回值的区域中的列号。

  • range_lookup -(可选)近似匹配 (TRUE) 或完全匹配 (FALSE),默认为近似匹配。

上面的示例中可以在G3单元格中输入如下公式:

=VLOOKUP(G2,B3:D9,3,FALSE)

G2是要查找的内容,B3:D9是查找区域(注意第一列一定是First Name),3是Salary在查找区域的列号,False表示精确匹配。

替代方式

除了VLOOKUP之外,也可以使用其他函数来代替,比如INDEX和MATCH的函数组合。

下面公式和之前使用VLOOKUP的效果是一样的。

=INDEX(D3:D9,MATCH(G2,B3:B9,0))

其中MATCH(G2,B3:B9,0)返回John在B3:B9中的行数4,然后INDEX(D3:D9,4)返回D3:D9中的第4行数据。

MATCH函数的最后一个参数0表示精确匹配。

多列匹配

常见的匹配是一列匹配,如果将上面的示例修改一下,用户同时提供First Name和Last Name,并且根据这两个值来同时匹配Salary。这时候应该怎么实现?

一个简单的方式是建一个辅助列,将First Name和Last Name合并,然后使用之前的公式就可以了。

如果不希望使用辅助列,就必须用到数组公式,什么是数组公式可以参考之前的文章。

我们来分步解释一下如何实现。

第一步,先将G2和G3单元格的数据合并。

=G2&G3

第二步,查找合并后的数据在查找区域中处于第几行,这里要使用MATCH函数,公式输入之后需要同时按下CTRL + SHIFT + ENTER。

{=MATCH(G2&G3,B3:B9&C3:C9,0)}

解释:公式中B3:B9&C3:C9是一个数组,存在于Excel的内存中:

{  “EmilySmith”;  “JamesAnderson”;  “MiaClark”;  “JohnLewis”;  “JessicaWalker”;  “MIAReed”;  “RichardLopez”}

将G2&G3的结果“JohnLewis”在这个数组进行精确匹配,将返回结果4(数组中的第4个元素)。

第三步,使用INDEX返回查找到的行号中的具体数值

{=INDEX(D3:D9,MATCH(G2&G3,B3:B9&C3:C9,0))}

从意义上看,这个公式跟之前替代VLOOKUP的INDEX、MATCH组合公式是一样的。

向左查询

使用VLOOKUP函数时,函数本身的实现方式会带来一些不便,比如VLOOKUP始终时向右查询,被查找的数据必须在查找区域的第一列中。如果需要向左做查找该怎么办?

比如,需要在G列填写Product信息,但是ID不在查找区域的第一列。

这时候可以使用INDEX和MATCH的组合公式,然后将公式拖动到G列其他行:

=INDEX($A$3:$A$6,MATCH(F3,$C$3:$C$6,0))

注意公式中“$”的使用。

区分大小写

VLOOKUP函数本身不区分大小写。比如下面的例子,查找区域中有“Mia”和“MIA”,当G2中输入“MIA”时会精确匹配到“Mia”。

如果需要区分大小写,又该如何操作?

第一步,找到一个可以区分大小写的函数EXACT。

=EXACT(G2,B5)//False=EXACT(G2,B8)//True

第二步,使用MATCH函数查找出对应行号(注意这里使用数组公式)。

{=MATCH(TRUE,EXACT(G2,B3:B9),0)}

解释:

EXACT(G2,B3:B9)返回一个数组,并保存在excel内存中。

{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE}

MATCH(TRUE,EXACT(G2,B3:B9),0),将返回数组中第一个TRUE的位置6。

第三步,使用INDEX返回查找到的行号中的具体数值

{=INDEX(D3:D9,MATCH(TRUE,EXACT(G2,B3:B9),0))}

跟之前的操作类似,这里就不作解释了。

精确匹配最后一项

VLOOKUP中如果查询区域有多个可以匹配到的数据,那么将会返回第一个匹配的数据。

如果希望返回最后一个匹配的数据,又该怎么实现?

还是之前的例子,这里把“Mia”改成了“MIA”,查找区域有两个“MIA”(第5行和第8行),正常VLOOKUP会返回第5行数据。

这里我们可以使用LOOKUP函数来实现,同时还可以了解LOOKUP函数本身的一些特性。

先看实现公式(不是数组公式):

=LOOKUP(2,1/(B3:B9=G2),D3:D9)

解释:

B3:B9=G2返回一个数组:

{FALSE; FALSE; TRUE; FALSE; FALSE; TRUE; FALSE}

接下来使用1来除以这个这个数组,执行除法的时候“TRUE”表示1,“FALSE”表示0。

1/{0;0;1;0;0;1;0}

1除以1返回1,1除以0返回错误#DIV/0,所以最后返回的数组为:

{#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!}

现在我们来看最外面层LOOKUP的含义:

首先是在上述的数组中查找数字2,看上去很让人困惑,因为数组中只有1和错误,没有2。不要担心,其实我们就是用数字2来让查询扫描到数组的最一位。

LOOKUP函数会自动忽略数组中的错误,它会扫描数组中的所有1,当它达到数组末尾时,将会后退到最后一个有效值——最后一个1。

找到最后一个1的位置后,就可以从D3:D9中匹配相应的数值。

参考资料:

  • https://www.excel-easy.com/examples/vlookup.html

  • https://www.excel-easy.com/examples/case-sensitive-lookup.html

  • https://www.excel-easy.com/examples/left-lookup.html

  • https://www.excel-easy.com/examples/two-column-lookup.html

  • https://www.exceltip.com/excel-formula-and-function/vlookup-to-find-last-matching-value.html

  • https://exceljet.net/how-to-lookup-first-and-last-match


更多内容可关注公众号:

excel匹配_Excel中的数据匹配和查找相关推荐

  1. excel数据库_EXCEL中的数据库函数DSUM真强大,SUMIFS已下线

    首发 公众号:EXCEL办公实战 条件求和,大家一直在使用SUMIF(S)函数其实数据库函数是真的香,我们一起来对比这学习看看 单条件求和传统:=SUMIF(B:B,G6,E:E) 数据库函数:=DS ...

  2. 如何将一张Excel表中的数据匹配到另一张表里

    在使用excel数据表时,有时需要将一张表中的数据匹配到另一张表中进行统计,一般来说表中的数据项不完全相同且表中的数据较多.这时就需要用到VLOOKUP函数进行查找. 函数介绍: VLOOKUP函数一 ...

  3. python匹配excel相同的数据_利用Python实现Excel的文件间的数据匹配功能

    我们知道Excel有一个match函数,可以做数据匹配. 比如要根据人名获取成绩 而参考表sheet1的内容如下: 要根据sheet1匹配每人的成绩,用Excel是这么写 index(Sheet1!B ...

  4. 将Excel文档中的数据导入数据库中

    一.效果:点击导出按钮,弹出导入模态窗体:在模态窗体中,①点击下载,会实现下载一个                Excel文件下载功能:②选择下载的Excel文件:③点击上传,Excel文档中的数据 ...

  5. excel中vlookup数据匹配

    1)excel 版本为2016 2)演示实现两个sheet匹配数据 3)实例中场景是HR通过晋级名单,到员工信息表中,匹配员工基本信息 4)员工基本信息(sheet1) 4)晋级名单(sheet2) ...

  6. excel中用正则匹配_excel 中如何使用正则表达式函数提取或替换内容

    word中自带正则表达式,不过Excel中却没有内置.可以在VBA中定义一个正则表达式函数,然后Excel中就可以调用了.VBA代码如下(VBA高亮无效,凑合着看): 1.Function ExStr ...

  7. excel匹配_Excel常用的关联匹配函数

    excel常用的关联匹配函数有lookup.vlookup.index.match.row.column.offset.hyperlink 1.vlookup函数 =vlookup(要查找的值,要在其 ...

  8. vlookup多项匹配_Excel 怎样用VLOOKUP匹配多列数据/excle全部筛选匹配

    excel怎么根据一列去筛选另一类的数据 1.首先,在两列中要选择数据齐全格作为对比筛选,在表格空白处输入=VLOOKUP,输入后会自动弹出对话框. 2表格B2(方便结果对比)中输入=VLOOKUP后 ...

  9. EXCEL省份和年份的数据匹配

    目录 EXCEL对两个满足两个条件的数据匹配公式 使用的函数 实例一 实例二 可能存在的问题 参考 本文用于记录处理数据的一些经验和方法 EXCEL对两个满足两个条件的数据匹配公式 使用的函数 IND ...

最新文章

  1. 9 单元测试中不得不知的概念
  2. 年度BCI奖 |THE ANNUAL BCI AWARD
  3. 在Windows操作系统下,由操作系统分配的内存就叫做堆
  4. 关于ensp配置出现 Error: Please renew the default configurations.
  5. Mysql数据库(五)——mysql事务及引擎
  6. rabbitmq文档
  7. mac安装python环境教程_python mac下安装虚拟环境的图文教程
  8. ORA-00845 方案解决
  9. 每日记载内容总结46
  10. 网络空间安全要学c语言吗,网络空间安全科学与技术(英文)杂志投稿-专门发布期刊官方征稿信息-万维书刊网...
  11. 计算机网络 第四章网络层笔记
  12. 基带信号传输之码间串扰
  13. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.6
  14. 怎么使用手机号申请邮箱,注册移动手机邮箱有哪些步骤?
  15. 基于CM6800的ATX电源维修
  16. 山无棱-天地合-乃敢与君绝
  17. ADS1256实现轮询
  18. 非对称加密(RSA)详解
  19. android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14): , w
  20. Android连上USb不充电,手机连接电脑只显示充电没有usb连接怎么办?

热门文章

  1. 中国深圳,600架无人机的盛典!
  2. python caffe 训练自己的模型_python接口调用已训练好的caffe模型测试分类方法
  3. 计算机应用基础教案本中职,计算机应用基础教案:计算机概述(中职教育)
  4. php一句话过狗,整理的最新WebSHell (php過狗一句話,過狗菜刀,2016過狗一句話,2016php免殺一句話)...
  5. criscriter英语测试软件,iTEST大学英语测试与训练系统
  6. python插入排序_从Python看排序:插入排序
  7. 大数据 -- kafka学习笔记:知识点整理(部分转载)
  8. dns轮训python
  9. Luogu2114 [NOI2014]起床困难综合症 【位运算】
  10. HDU2067 小兔的棋盘