Excel:如果三个匹配,则从第三列返回值

时间:2017-03-16 17:41:31

标签: excel vba excel-formula

我有两个excel电子表格,其结构如下:

Sheet 1中

A1-A1000(姓名):
Doe,John 例如,Jane

C1-C1000(出生日期):
1990年12月25日
2000年1月1日

Sheet 2中

B2-B1000(姓名):
Doe,John 马修斯,安迪

D2-D1000(出生日期):
匹配将在此处填充的出生日期

基本上,我需要比较两张表中的数千个值,如果它们的行具有匹配的名称,我需要将Sheet1行中的生日值与相应的名称放入Sheet2中的D列。任何人都有这个想法吗?

感谢您的帮助,我对excel没有经验,所以我对这一切都不熟悉。

3 个答案:

答案 0 :(得分:3)

请查看vlookup功能。您可以在此处找到文档:VLOOKUP function

我把它放入Sheet1(列B为空白):

John        12/25/1990
Jane        1/1/2000

在Sheet2中,我在A1,A2和A3中放置了JohnAndyJane

在B2 John的右侧,我放置了:

=VLOOKUP(A1,Sheet1!$A$1:$C$4,3,FALSE)

让我解释一下。 A1表示我在Sheet2的A1中寻找John。在

Sheet1!$A$1:$C$4

告诉函数查看Sheet1,A到C列(以及第1到4行)。美元符号是告诉Excel使用绝对(而不是相对)引用的必要条件。 (相对引用会使整个事情以不合需要的方式发生变化。)(如果您有1000个名字和生日,您会希望自己从$A$1转到$C$1000。)

3表示返回第三列,在您的情况下,是生日。

FALSE表示您必须完全匹配。

然后我将B1复制到B2和B3。

结果如下:

John    12/25/1990
Andy    #N/A
Jane    1/1/2000

它找到了约翰和简,并返回了他们的生日。它没有找到Andy,所以它显示了#N / A.

(以下是编辑2,其中OP询问了一些分支问题。)

使用Fill Down

复制公式

除了Ctrl-C + Ctrl-V之外,还有键盘快捷键可以将公式复制到列中。单击B1以突出显示它。然后按住shift键并按向下箭头两次。现在突出显示B1,B2和B3。然后按Ctrl-D以填充公式。如果正确完成,B3中的公式应与B1中的公式相同。您可以重复使用相同的技术,但可以使用Shift + PageDn十次(然后按Ctrl-D)将公式复制250次。

将列格式化为日期

单击带有数字的列,并将格式下拉列表从常规更改为短日期。这会将单元格的格式从例如21567(内部Excel表示)切换为1/17/1959

添加错误消息

在评论中,OP询问如何发送错误消息而不是#N / A.可以将VLOOKUP包装在另一个函数中,即IFNA。例如,

 =IFNA(VLOOKUP(A1,Sheet1!$A$1:$C$4,3,FALSE), "Lookup failure.")

会提供日期(如果找到了名字)或者会说“查找失败。”

答案 1 :(得分:1)

您走在正确的轨道上但是您的列位于错误的位置。

匹配就是你用来找到匹配的,所以它应该是:

MATCH(Sheet2!$B2,Sheet1!$A$2:$A$1000, 0)

或者您可以使用完整列而不会有任何损害:

MATCH(Sheet2!$B2,Sheet1!$A:$A, 0)

然后您的索引是返回的列:

=INDEX(Sheet1!$C:$C,...)

所以一起

=INDEX(Sheet1!$C:$C,MATCH(Sheet2!$B2,Sheet1!$A:$A, 0))

请注意,如果找不到名称,则会返回错误,您可以使用IFERROR捕获该错误并返回其他内容:

=IFERROR(INDEX(Sheet1!$C:$C,MATCH(Sheet2!$B2,Sheet1!$A:$A, 0)),"Name not Found")

现在,如果sheet2上的名称不在sheet1中,那么它将返回Name not Found而不是错误。

答案 2 :(得分:0)

我认为你刚刚把比赛搞糊涂了。

=Index(sheet1!C:C,match(sheet2!B:B,Sheet1!A:A,0))