vlookup 使用不同工作表中的两个列名称

vlookup 使用不同工作表中的两个列名称

我有一本工作簿,里面有两个独立的工作表。我想知道工作表 B 中出现的值是否也出现在工作表 A 中,如果是,我想返回“YES”。如果不是,我想返回“NO”。基于 A 列和 B 列。

在工作表 A 中,我有以下数据集:

   NAME             DOB
1  Bob Builder   1/1/2001 
2  Patrik Str    2/2/2001
3  Thunder Ct    3/3/2001
4  peter Grif    4/4/2001

在工作表 B 中,我有以下数据集:

   NAME            DOB
1  Bob Builder   1/1/2001 
2  Patrik Str    2/2/2001
3  Thunder Ct    3/3/2001
4  peter Grif    4/4/2001
5  Bob Builder   8/8/2011 
6  Patrik Str    2/25/2001

我试过了,=IFERROR(IF(MATCH(A1,Sheet1!$A:$A,0),"yes",),"no")但它只查找 A 列而不是 B 列。这之所以可以正常工作,只是因为它查看了 A 列,但还有其他同名但出生日期不同的学生。

Excel 中的 vlookup 或 match 函数是否可以通过比较列名标题(如姓名和 DOB)而不是 A、B 来使用。

答案1

您可以使用以下公式:

=IF(SUMPRODUCT(--('Worksheet A'!$A$2:$A$5='Worksheet B'!A2)*(--'Worksheet A'!$B$2:$B$5='Worksheet B'!B2))=1,"Yes","No")

$A$2:$A$5第一个工作表中的名称数组将其更改为Name列中的最后一个单元格并将$其修复,以便您可以拖动它而不更改
A2 单独是第二个工作表中的名字
$B$2:$B$5 第一个工作表中的数组将其更改为列DOB中的最后一个单元格并将其修复,以便您可以拖动它而不更改 B2 第二个工作表中 A2 的相应日期 当 A2 和 B2 都与相应数据匹配时,Sumproduct 将导致 1 如果结果为 1,则给出“是”,如果不匹配,则给出“否” 您可以将公式向下拖动 DOB$



在此处输入图片描述

=IF(SUMPRODUCT(--(Name=A2)*(--DOB=B2))=1,"Yes","No")
如果您使用 Define Nameworksheet A并给出Name没有标题的 Name 列,
也可以给出没有标题DOB的 DOB 列, 您可以使用上述公式并将其拖动worksheet A

如果您愿意使用Match以下内容:

=IF(ISNA(MATCH(1,(--(Name=A2)*(--(DOB=B2))),0)),"No","Yes")
并同时 按下Ctrl+ Shift+ ( ) 您也可以拖动它 EnterArray Formula

答案2

使用公式在每张表上创建第三列

= A2 & " " & B2

使用该列进行匹配。

答案3

使用表格和结构化引用可以相当简单。对于每个数据表,Insert ► Tables ► Table

并且此方法还允许您通过名称引用列标题。

默认名称为Table1Table2——您创建的第一个表将为1,第二个表2,但您可以在公式 ► 名称管理器下重命名

然后,对于 C1 中的表 2,添加列标题(例如“在表 1 中”。应该会出现表格的第三列。

C2: =IF(SUMPRODUCT(([@NAME]=Table1[NAME])*([@DOB]=Table1[DOB])),"YES","NO")

该公式将自动向下传播并给出结果。

另一个选项(假设该NAME列是第 1 列)是:

C2: =IF(VLOOKUP([@NAME],Table1,2,FALSE)=[@DOB],"YES","NO")

使用表格中的结构化引用时,@NAME引用公式同一行中列标题“NAME”下的条目;Table1[NAME]引用表 1 中的整个列(标题除外)。 [NAME]单独引用同一张表中的整个列。

使用表格的另一个优点是,当您添加/删除相邻的行或列时,表格(和引用)将自动扩展/收缩。

在此处输入图片描述

相关内容