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


猜你喜欢
- 我们使用wps演示文稿的时候,为了让自己的演示文稿更加生动,我们有时候需要插入一些图片,我们如何插入图片并且对插入的图片进行美化操作呢?下面
- 当组合框的下拉部分的内容被滚动时,Scroll事件发生。
- 许多小伙伴打开电脑时发现电脑屏幕变黑了。这可能是由于板卡接触不良或机器碰撞问题造成的设备运行不稳定或软件不兼容的严重碰撞和系统碰撞。具体情况
- 近日有来自XDA开发者论坛的用户分享了一种更加简单的关机/重启方法,并表示该方法适合所有运行Windows 8/RT操作系统的PC及平板电脑
- Win10开始菜单下载箭头图标非常方便易用。许多用户在更新系统后找不到此图标。其实,设置起来很方便。只需在个性化设置中打开它。让我们看看详细
- 很多用户升级Win11之后发现无法关闭右下角的图标,只能隐藏在箭头里面,看上去就很难受,有什么办法可以关闭右下角图标而不是隐藏吗?下面小编就
- 当adobe在使用过程中出以下提示,该如何解决呢?碰到这种情况的小伙伴快和小编一起来看看吧!方法一1.请关闭所有adobe软件,然后在终端输
- 对于使用Mac电脑办公的小伙伴在工作中可能会打开很多应用程序,但是又想回到桌面,一个一个去关闭或最小化再回到桌面太麻烦,那么如何让Mac可以
- 没想到,2022年的到来,也给微软带来了一个新bug。随着日期从2021年12月31日跳转到2022年1月1日,不少使用微软Exchange
- 一般我们只有在电脑系统出现无法修复的情况下才回去重装系统,当然也有部分用户会根据自己的使用需求来进行重装,下面就由小编来为有重装系统需求的用
- 如果我们在安装win10操作系统计算机时意外关闭win10系统,很多用户不知道如何解决。小编认为,这个问题可能是由于我们计算机内部文件的意外
- 由于苹果 iPhone X 及后续机型采用刘海屏设计,顶部状态栏空间被大幅缩减,所以电池百分比一直不支持在状态栏显示,只有用户开启控制中心时
- 最近有Win10 32位系统用户在玩某游戏的时候,反映说遇到提示由于找不到xinput1 3.dll无法继续执行代码,导致游戏中断无法玩耍,
- Windows 10将在7月29日正式发布并上市,而美国新蛋上已经提前开始接受预订了,价格相当厚道。Windows 10面向正版Window
- Excel表格怎么使用求和?相信不少用户都有使用过Excel表格来统计数据,而求和正是统计数据中非常重要的一个环节,而且掌握了快捷的求和方式
- 在制作表格的过程中经常用到合并单元格和拆分单元格,如何在excel中进行这两个操作呢?下面就跟小编一起来看看吧。excel把单元格合并拆分的
- 我们都知道电脑的默认的系统字体非常普通,很多用户不喜欢使用,想要更换别的,那么Win10怎样更改系统字体呢,其实系统是没有这个功能的,因此必
- 机械键盘随着电竞游戏的流行而普及,越来越多的人开始关注并购买机械键盘,使用机械键盘确实有更好的手感,目前机械硬盘从100多到上千的都有,那么
- 从事教育职业的很多小伙伴,经常会用WPS文字给学生出一些考试题,对于一些简单的考试题还行,如果遇到有些关于数据方程式的题目,很多小伙伴都不知
- Win10打开命令提示符的方法很简单,只要运行CMD指令就可以了。当然Win10打开命令提示符的方法不只一种,有些方法知道的人不多。本文就来