使用VLOOKUP函数在多个工作表中查找相匹配的值
在某个工作表单元格区域中查找值时,我们通常都会使用VLOOKUP函数。但是,如果在多个工作表中查找值并返回第一个相匹配的值时,可以使用VLOOKUP函数吗?本文将解这个技术。
最简单的解决方案是在每个相关的工作表中使用辅助列,即首先将相关的单元格值连接并放置在辅助列中。然而,有时候我们可能不能在工作表中使用辅助列,特别是要求在被查找的表左侧插入列时。因此,本文会提供一种不使用辅助列的解决方案。
下面是3个示例工作表:

:工作表Sheet1

:工作表Sheet2

:工作表Sheet3
示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”对应的Amount列中的值,如下所示。

:主工作表Master
数组公式如下:
=VLOOKUP($A3,INDIRECT(“‘”&INDEX(Sheets,MATCH(TRUE,COUNTIF(INDIRECT(“‘”&Sheets&”‘!B:B”),$A3)>0,0))&”‘!B1:D10″),3,0)
其中,Sheets是定义的名称:
名称:Sheets
引用位置:={“Sheet1″,”Sheet2″,”Sheet3”}
在公式中使用的VLOOKUP函数与平常并没有什么不同,我们首先需要确定在哪个工作表中进行查找,因此我们使用的函数应该能够操作三维单元格区域,而COUNTIF函数就可以。公式中的:
COUNTIF(INDIRECT(“‘”&Sheets&”‘!B:B”),$A3)
转换为:
COUNTIF(INDIRECT(“‘”&{“Sheet1″,”Sheet2″,”Sheet3″}&”‘!B:B”),$A3)
转换为:
COUNTIF(INDIRECT({“‘Sheet1’!B:B”,”‘Sheet2’!B:B”,”‘Sheet3’!B:B”}),$A3)
INDIRECT函数指令Excel将这个文本字符串数组中的元素转换为单元格引用,然后传递给COUNTIF函数,同时单元格A3中的值作为其条件参数,这样上述公式转换成:
{0,1,3}
分别代表工作表Sheet1、Sheet2、Sheet3的列B中“Red”的数量。
因为我们想得到第一个匹配的结果,所以将该数组传递给MATCH函数:
MATCH(TRUE,COUNTIF(INDIRECT(“‘”&Sheets&”‘!B:B”),$A3)>0,0)
转换为:
MATCH(TRUE,{0,1,3}>0,0)
转换为:
MATCH(TRUE,{FALSE,TRUE,TRUE},0)
结果为:
2
因此,将在工作表列表中的第2个工作表即Sheet2中执行VLOOKUP操作。
现在,将上面的结果作为参数值传递给INDEX函数:
INDEX(Sheets,MATCH(TRUE,COUNTIF(INDIRECT(“‘”&Sheets&”‘!B:B”),$A3)>0,0))
转换为:
INDEX(Sheets,2)
转换为:
INDEX({“Sheet1″,”Sheet2″,”Sheet3”},2)
结果为:
Sheet2
这里,需要使用INDIRECT函数进一步构造来生成传递给VLOOKUP函数的单元格区域,因此:
=VLOOKUP($A3,INDIRECT(“‘”&INDEX(Sheets,MATCH(TRUE,COUNTIF(INDIRECT(“‘”&Sheets&”‘!B:B”),$A3)>0,0))&”‘!B1:D10″),3,0)
转换为:
=VLOOKUP($A3,INDIRECT(“‘Sheet2″&”‘!B1:D10”),3,0)
转换为:
=VLOOKUP($A3,INDIRECT(“‘Sheet2′!B1:D10”),3,0)
转换为:
=VLOOKUP($A3,’Sheet2’!B1:D10,3,0)
得到结果:
55
最新推荐
- 
                                
                                    
excel怎么把一列数据拆分成几列 excel一列内容拆分成很多列
           excel怎么把一列数据拆分成几列?在使用excel表格软件的过程中,用户可以通过使用excel强大的功能 […]
 - 
                                
                                    
win7已达到计算机的连接数最大值怎么办 win7连接数达到最大值
           win7已达到计算机的连接数最大值怎么办?很多还在使用win7系统的用户都遇到过在打开计算机进行连接的时候 […]
 - 
                                
                                    
window10插网线为什么识别不了 win10网线插着却显示无法识别网络
           window10插网线为什么识别不了?很多用户在使用win10的过程中,都遇到过明明自己网线插着,但是网络 […]
 - 
                                
                                    
win11每次打开软件都弹出是否允许怎么办 win11每次打开软件都要确认
           win11每次打开软件都弹出是否允许怎么办?在win11系统中,微软提高了安全性,在默认的功能中,每次用户 […]
 - 
                                
                                    
win11打开文件安全警告怎么去掉 下载文件跳出文件安全警告
           win11打开文件安全警告怎么去掉?很多刚开始使用win11系统的用户发现,在安装后下载文件,都会弹出警告 […]
 - 
                                
                                    
nvidia控制面板拒绝访问怎么办 nvidia控制面板拒绝访问无法应用选定的设置win10
           nvidia控制面板拒绝访问怎么办?在使用独显的过程中,用户可以通过显卡的的程序来进行图形的调整,比如英伟 […]
 
热门文章
excel怎么把一列数据拆分成几列 excel一列内容拆分成很多列
2win7已达到计算机的连接数最大值怎么办 win7连接数达到最大值
3window10插网线为什么识别不了 win10网线插着却显示无法识别网络
4win11每次打开软件都弹出是否允许怎么办 win11每次打开软件都要确认
5win11打开文件安全警告怎么去掉 下载文件跳出文件安全警告
6nvidia控制面板拒绝访问怎么办 nvidia控制面板拒绝访问无法应用选定的设置win10
7win11c盘拒绝访问怎么恢复权限 win11双击C盘提示拒绝访问
8罗技驱动设置开机启动教程分享
9win7设置电脑还原点怎么设置 win7设置系统还原点
10win10硬盘拒绝访问怎么解决 win10磁盘拒绝访问
随机推荐
专题工具排名 更多+

  
									
                                
  
									
                                
  
									
                                
  
									
                                
闽公网安备 35052402000376号