VLOOKUP函数怎么查找匹配值

时间:2023-02-28 05:10:35 

我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。

下面是3个示例工作表:

VLOOKUP函数怎么查找匹配值

图1:工作表Sheet1

VLOOKUP函数怎么查找匹配值

图2:工作表Sheet2

VLOOKUP函数怎么查找匹配值

图3:工作表Sheet3

示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”且“Year”列为“2012”对应的Amount列中的值,如下图4所示的第7行和第11行。

VLOOKUP函数怎么查找匹配值

图4:主工作表Master

解决方案1:使用辅助列

可以适当修改上篇文章中给出的公式,使其可以处理这里的情形。首先在每个工作表数据区域的左侧插入一个辅助列,该列中的数据为连接要查找的两个列中数据。这样,获取值的数组公式(单元格C7)如下:

=VLOOKUP(A7&” ”&B7,INDIRECT(“‘”&INDEX(Sheets,MATCH(TRUE,COUNTIF(INDIRECT(“‘”&Sheets&”‘!A:A”),A7&” ”&B7)>0,0))&”‘!A1:D10″),4,0)

其中,Sheets是定义的名称:

名称:Sheets

引用位置:={“Sheet1″,”Sheet2″,”Sheet3”}

这个公式的运行原理与上文相同,可参见《Excel公式技巧16:使用VLOOKUP函数在多个工作表中查找相匹配的值(1)》。

解决方案2:不使用辅助列

首先定义两个名称。注意,在定义名称时,将活动单元格放置在工作表Master的第11行。

名称:Arry1

引用位置:=MATCH(TRUE,COUNTIFS(INDIRECT(“‘”&Sheets&”‘!B:B”),$A11,INDIRECT(“‘”&Sheets&”‘!C:C”),$B11)>0,0)

名称:Arry2

引用位置:=ROW(INDIRECT(“1:10”))-1

在单元格C11中的数组公式如下:

=INDEX(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!D1:D10”),MATCH(1,(T(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!B1”),Arry2,,,))=$A11)*(N(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!C1”),Arry2,,,))=$B11),0))

下面来看看公式是怎么运作的。首先看看名称Arry1:

=MATCH(TRUE,COUNTIFS(INDIRECT(“‘”&Sheets&”‘!B:B”),$A11,INDIRECT(“‘”&Sheets&”‘!C:C”),$B11)>0,0)

可以转换为:

=MATCH(TRUE,COUNTIFS(INDIRECT({“‘Sheet1’!B:B”,”‘Sheet2’!B:B”,”‘Sheet3’!B:B”}),”Red”,INDIRECT({“‘Sheet1’!C:C”,”‘Sheet2’!C:C”,”‘Sheet3’!C:C”}),2012)>0,0)

转换为:

=MATCH(TRUE,{0,0,1}>0,0)

结果为:

3

表明在工作表列表的第3个工作表(即Sheet3)中进行查找。

因此,在单元格C11的公式中的:

INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!D1:D10”)

转换为:

INDIRECT(“‘”&INDEX(Sheets,3)&”‘!D1:D10”)

转换为:

INDIRECT(“‘”&INDEX({“Sheet1″,”Sheet2″,”Sheet3″},3)&”‘!D1:D10”)

转换为:

INDIRECT(“‘”&”Sheet3″&”‘!D1:D10”)

转换为:

INDIRECT(“‘Sheet3’!D1:D10”)

结果为:

Sheet3!D1:D10

传递到INDEX函数中作为其参数array的值:

=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!B1”),Arry2,,,))=$A11)*(N(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!C1”),Arry2,,,))=$B11),0))

同样,公式中的:

INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!B1”)

得到:

Sheet3!B1

公式中的:

INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!C1”)

得到:

Sheet3!C1

现在,单元格C3中的公式变为:

=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(Sheet3!B1,Arry2,,,))=$A11)*(N(OFFSET(Sheet3!C1,Arry2,,,))=$B11),0))

由于这里的两个公式结构:

T(OFFSET(Sheet3!B1,Arry2,,,))=$A11

N(OFFSET(Sheet3!C1,Arry2,,,))=$B11

相似,因此只解释其中一个的工作原理。

先看看名称Arry2:

=ROW(INDIRECT(“1:10”))-1

由于将在三个工作表中执行查找的范围是从第1行到第10行,因此公式中使用了1:10。

上述公式转换为:

{1;2;3;4;5;6;7;8;9;10}-1

得到:

{0;1;2;3;4;5;6;7;8;9}

该数组被传递给OFFSET函数作为其rows参数,这样:

OFFSET(Sheet3!B1,Arry2,,,)

将会生成:

Sheet3!B1

Sheet3!B2

Sheet3!B3

Sheet3!B10

因此,公式:

T(OFFSET(Sheet3!B1,Arry2,,,))=$A11

转换为:

T(OFFSET(Sheet3!B1,{0,1,2,3,4,5,6,7,8,9},,,))=$A11

转换为:

T({Sheet3!B1,Sheet3!B2,Sheet3!B3,Sheet3!B4,Sheet3!B5,Sheet3!B6,Sheet3!B7,Sheet3!B8,Sheet3!B9,Sheet3!B10})=$A11

转换为:

{“Colour”,”Red”,”Blue”,”Blue”,”Red”,”Violet”,”Blue”,”Yellow”,”Green”,”Red”}=$A11

转换为:

{“Colour”,”Red”,”Blue”,”Blue”,”Red”,”Violet”,”Blue”,”Yellow”,”Green”,”Red”}=”Red”

得到:

{FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE}

注意,如果你在这里使用的是N函数:

N(OFFSET(Sheet3!B1,Arry2,,,))

其结果将为:

{0,0,0,0,0,0,0,0,0,0}

当然,也不能够单独只使用OFFSET函数:

OFFSET(Sheet3!B1,Arry2,,,)

其结果将为:

{#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!}

同样地,公式中的:

N(OFFSET(Sheet3!C1,Arry2,,,))=$B11

转换为:

{0,2010,2010,2012,2012,2012,2012,2011,2014,2011}=2012

结果为:

{FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE}

好了!现在可以将上面得到的中间结果放到主公式中:

=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(Sheet3!B1,Arry2,,,))=$A11)*(N(OFFSET(Sheet3!C1,Arry2,,,))=$B11),0))

转换为:

=INDEX(Sheet3!D1:D10,MATCH(1,({FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE})*({FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE}),0))

转换为:

=INDEX(Sheet3!D1:D10,MATCH(1,{0,0,0,0,1,0,0,0,0,0},0))

转换为:

=INDEX(Sheet3!D1:D10,5)

结果为

32

标签:VLOOKUP函数,VLOOKUP函数怎么查找,VLOOKUP函数怎么查找匹配值,WPS
0
投稿

猜你喜欢

  • Excel WEIBULL.DIST 函数 使用实例教程

    2022-01-25 02:03:40
  • Win10指纹识别功能怎么使用(以提高系统安全性)

    2023-02-21 18:49:30
  • win10如何创建系统还原点

    2023-10-13 11:16:53
  • 3年办公人员老司机总结出的7个Word技巧,简单实用,提高工作效率

    2023-11-10 01:37:42
  • Word中千分号和万分号怎么打?

    2023-12-05 22:15:44
  • excel的自动筛选巧妙使用的方法步骤

    2022-08-21 05:10:52
  • excel怎么一键隐藏/取消隐藏分级显示数据?

    2023-02-09 02:48:29
  • Word 2016专业人士备忘单!

    2023-04-04 00:41:13
  • Win8.1系统如何使用任务管理器查看网络使用情况

    2023-07-02 16:01:56
  • Win11怎么安装WSA安卓子系统?Win11安卓子系统安装教程

    2022-11-04 05:54:40
  • Photoshop Mac 新建闪烁以及创建按钮点击无反应解决方法

    2023-03-12 04:33:33
  • Win10电脑发虚怎么办?Win10提高电脑画质的一个小技巧

    2023-02-18 23:33:27
  • Word自动恢复功能的两个使用技巧

    2022-04-03 11:57:20
  • Win10出现无法定位序数怎么解决?Win10出现无法定位序数解决方法

    2022-10-06 22:34:54
  • Win10 1909系统任务栏搜索框无法使用?任务栏搜索框无法使用解决方法

    2023-11-12 00:29:08
  • 微软:Windows 10基本就是这个样子了

    2022-05-19 12:08:41
  • XP电脑不能关机?解决XP系统无法关机的方法

    2023-07-03 17:38:58
  • WinRAR获取PowerPoint2007中的图片

    2023-11-07 13:08:38
  • 小米笔记本如何重装系统Win11?小米笔记本重装Win11系统的方法

    2023-01-19 04:50:35
  • ​电脑版wps表格如何设置页面布局

    2023-01-15 22:06:17
  • asp之家 电脑教程 m.aspxhome.com