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


猜你喜欢
- 办公室的小刘将在国庆结婚,能不能用WPS文字来打印请柬呢?不但能,而且能很好地完成。★通过“套打”将文字打印到指定位置。★通过邮件合并功能从
- 有很多人装了Mac和Windows的双系统之后会发现进入苹果后,再重启进Windows就会出现时间不同步的问题,Windows下的时间比Ma
- 有些朋友在更新Win10系统的时候出现了有可用更新但是却一直安装失败无法更新的情况,这种问题应该怎么解决呢?今天系统之家小编就来给大家讲讲W
- 在编辑文档的过程中,如果反悔了就按撤销按钮,但有时候撤销按钮不够用,这时候怎么办?方法一:养成一个良好的习惯,在编辑文档前,先建立一个副本。
- 很多用户在使用snkrs软件时候,有时候会发现参与很多次抽奖都不会被抽到,有些用户觉得我们这是snkrs好没有养好,但是也不了解snkrs该
- 方式1:打开Word2013文档窗口,切换到“页面布局”功能区。在“页面设置”分组中单击“纸张大小”按钮,并在打开的“纸张大小”列表中选择合
- excel表格数据怎么转换为箱形图?excel表格中的数据想要制作成图表,该怎么制作箱形图呢?下面我们就来看看详细的教程,需要的朋友可以参考
- Excel中出现这个问题有两种情况,如何进行说明一下这两种情况。今天,小编就教大家在Excel中2007版进行状态栏中不显示求和值的操作方法
- 作为最常见的电脑系统,Win10系统电脑有许多的小技巧是大家不知道的,那么Win10系统有哪些实用的小技巧呢,下面小编就来和小伙伴讲一讲,有
- Windows 10 v1809十月更新版正朝着史上最糟糕Windows升级义无反顾地冲过去,不但第一次正式发布后紧急撤回,还在重新打造了一
- markdownpad2怎么设置为中文?markdownpad2可快速将文本转换为美观的HTML/XHTML的网页格式代码,是一款windo
- 嵌套(删除空行):Table.SelectRows、List.IsEmpty、List.RemoveMatchingItems、Record.FieldValues(Power Query 之 M 语数据源:“姓名”“基数”“个人比例”“个人缴纳”“公司比例”“公司缴纳”“总计”,共7列7行数据,其中第4行整行为空目标:删除整行为空的行操
- AHCI驱动是判断新装的系统是否识别硬盘的关键,如果用户在BIOS开启了AHCI,就能够正常进入系统,但是如果系统并没有AHCI驱动,还是进
- win10一周年更新的重要功能中就有一个Windows Ink功能,也就是win10的便签功能,全新的“便签”能够识别手写输入记录,能够根据
- Win10 Bug多吗?对很多用户来说Win10的Bug还是太多了,毕竟Win10系统只是刚出来,总有一些漏洞要修复。那么Win10 Bug
- 如何使用ps制作分割字体效果?给大家介绍如何使用ps制作分割字体效果,一起来看看吧。分割字体效果如下图1、打开ps,新一个文档背景并填充颜色
- 很多时候我们所使用的电脑是有分独立显卡和集成显卡,而一些用户会在想要运行大型程序的时候去设置独立显卡优先,但很多用户不清楚如何操作,其实其实
- 1.点击需要制作个性单元格的单元格,接着点击工具栏的“插入”→“形状”,我们就可以在单元格里绘制形状了。 2.在绘
- Adobe Reader阅读器看文章字体出现锯齿感怎么办?经常使用Adobe Reader阅读器查看pdf文件,但是发现文字出现锯齿该怎么解
- 电脑用久了就容易出现一些这样或那样的毛病,比如说最近有用户反映在电脑使用中遇到桌面文件名变成了蓝色,这是怎么回事?不要着急,下面小编就给大家