VLOOKUP函数怎么查找匹配值
发布时间:2023-02-28 05:10:35
我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。
下面是3个示例工作表:
图1:工作表Sheet1
图2:工作表Sheet2
图3:工作表Sheet3
示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”且“Year”列为“2012”对应的Amount列中的值,如下图4所示的第7行和第11行。
图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


猜你喜欢
- Win11系统Windows Defender错误0x800b0100怎么办,本文就为大家带来了详细的解决教程,需要的朋友一起看看吧Wind
- 大家在使用windows defender时,有遇到提示错误0x80070422吗?是什么导致出现的这个问题呢?windows defend
- 当PPT幻灯片中的对象放映完毕后,就可以为PPT对象添加退出动画效果,使其慢慢地退出当前幻灯片,消失于无形中,这样我们会给观看者留下美好的印
- 签订买卖合同是我们成交的必要经过,合同成功签订之前,买卖双方为了自己利益最大话,都希望合同的中的各个条款对自己有益,在签订合同之前,一份合同
- 页面布局→页面设置→工作表→顶端标题行。输入$1:$2(标题两行,一行就是$1:$1),也可将光标放入框内后用鼠标点选表左边的第一行或两行。
- Win10打印就蓝屏怎么解决?我们在办公的时候都需要打印东西,但是最近有用户反应,自己的电脑一打印东西就蓝屏,这个问题该怎么解决呢?下面和小
- 在我们使用的Win10系统电脑中是可以对系统的任务栏大小进行调整的,用户将鼠标移动到任务栏上方之后就可以按住鼠标左键拖动来调整大小,这样用户
- 很多朋友都想知道U盘怎么恢复数据?关于这个问题,小编有一种方法可以帮你们解决。下面就U盘怎么恢复数据给出的图文操作流程。U盘数据如何恢复?误
- 文档打不开怎么办,该怎么办呢?具体如何去进行处理的呢?今天,小编就教大家在Word中出现打不开现象等情况的解决方法。Word中出现打不开现象
- Win10自带了许多小功能,这些小功能都是为了使用户的操作体验感更好而配备的,就像Win10的语音识别系统十分的方便,但是凡事有利必有弊,带
- 微信是一款我们在日常生活中经常用到的社交工具,我们除了会用来与好友联系以外,还经常使用微信钱包进行支付收款等,功能十分强大。在微信钱包中,我
- Win8系统电脑开机提示找不到funkoala64.dll怎么办?Win8系统开机提示无法找到funkoala64.dll文件该如何解决?请
- 我们在使用电脑的时候,为了防止电脑中的重要数据丢失,经常会为自己的电脑进行系统备份。那么对于win7系统来说,我们需要怎么设置呢?其实操作方
- 1 用Word2013打开一篇含有表格的文档,双击表格左上角的按钮,可以切换到“表格工具->设计”选项卡。2 我们切换到旁边的“表格工
- Windows 11系统是目前非常火热的电脑操作系统,但是还是有很多用户还未升级Win11系统,他们不知道Win11系统是不是免费升级的,那
- 有时在编辑文档的时候,可能需要将某些文本转换为表格的形式,那么,如何将文本转为表格呢?下面就让小编告诉你 wps如何将文本转换为表格的方法。
- 浩辰CAD看图王是目前非常火热制图软件,这款软件的功能是很强大的,CAD软件中的图层功能不管是在CAD看图还是在CAD制图中都有着至关重要的
- 最近,有win8系统用户表示,刚装好win8时耳机是可以用的,但是后面发现插上耳机就没有声音了,耳机没声音就会导致视频或听歌没法听到声音,很
- 使用UltraCompare如何进行模块和线路模式合并?UltraCompare破解版是专为Mac用户设计的文件比较工具,支持文本编辑、系统
- 自从我国加入WTO以后,我国的进出口贸易太多了,公司有很多地方都要做出改变,就简单的来说报表也需要做中英文对照了,在excel中可以制作出专