VLOOKUP在多个工作表中查找相匹配的值
发布时间:2022-03-18 23:12:41
我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。
下面是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


猜你喜欢
- 若要在 App 中使用字体,您需要使用“字体册”安装字体。当您在安装字体时,“字体册”会列出它找到的任何问题,供您检查。您也可以稍后再验证字
- 在我们日常使用wps文字的时候总会遇到大大小小的问题,例如设置wps文档页面,下面小编就为你介绍wps文字页面怎么放大的方法啦,欢迎大家来到
- win10网络适配器不见了如何解决?网络适配器就像大脑中枢,只不过它是在管理网络的进进出出。网络的世界很奇妙,一个不对劲,就不听使唤了。如果
- 在WPS中制作文本文档时,通常需要添加页眉页脚,比起千篇一律的数字或者文字页眉页脚,图形的页眉页脚不是显得更加与众不同?下面系统之家就教你如
- Excel怎么绘制双坐标轴图表?excel表格中经常为了方便阅读,会将数据转化为图标,现在当我们需要两个坐标轴来表示数据该怎么操作呢?下面我
- 有很多小伙伴在使用win10系统时会遇到电脑出现乱码的情况,那么当我们遇到win10系统出现乱码怎么办呢?很多小伙伴都不知道该如何解决win
- soul是最近比较火的的社交软件,不知道大家里面的功能熟悉不,你们知道soul中怎么将定位打开的吗?不了解的话,就跟一起往下看看soul中将
- 在使用win10远程桌面进行远程连接的时候,很多的用户们表示,自己在连接的时候,提示失败了,无法连接成功,其实这可能是系统设置方面没有打开相
- 最近有win11的用户反应有win11图片不显示缩略图了,不知道是什么原因,这可能是由于我们开启了最佳性能,只需要在高级系统设置下将他关闭就
- 在Excel数据输入中,有时会输入错别字或错误输入,Excel自动更正不但能帮助用户快速准确地输入常用词汇、短语,还能够纠正错别字和错误输入
- 在Excel中经常需要用到公式函数进行数据统计,其中一个计算以E为底的指数函数,虽然不常用,但学到的也是自己掌握的,接下来是小编为大家带来的
- 随着相关技术的成熟与发展,输入法软件内置的输入方式也日趋多样化,搜狗浏览器自然也不例外。那么,搜狗输入法该怎么调整输入方式呢?不清楚操作步骤
- 和许多腾讯系应用一样,腾讯微云也支持QQ、微信账号登录。那么问题出现了,腾讯微云能否扫码登录?又该怎么操作呢?针对上述问题,小编今天为大家带
- 许多小伙伴在找一些资源的时候都会去百度网盘找,但是百度网盘的存储数据默认是不公开的,那么怎么搜索百度网盘的资源呢?只能通过第三方的百度网盘搜
- dbf文件是一个非常常见的数据库格式文件,很多用户在没有安装软件的时候,双击是无法打开的,其实打开的方式有很多,下面来看看想想的教程吧。db
- 现在安装一个系统很方便,只要有一个U盘就可以给电脑安装系统。用U盘来安装系统前提条件就是要将镜像文件写入到U盘里,这样才可以给电脑安装系统;
- 当我在《华尔街日报》上看到带有这样的图例的图表时,我知道我必须在“ 滑动文件”中添加类似的图表…但是在Excel中,我们需要动态图例!使用动
- win10系统的整体并不如win7可靠,各种小问题不断,比如用户尝试同步应用程序查看新电子邮件时,打开Windows Mail应用程序会遇到
- 在之前的文章中介绍了Word各个选项卡的各种功能和其所在的位置,感兴趣的朋友可以去看一看。接下来让我们一起了解Word中的技巧知识。1.Wo
- 最近有小伙伴跟小编反映,自己更新到最新的Win10系统后,微软应用商店出现Error 0x00000193的提示,这是怎么回事?如果你不知道