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

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

工作表Sheet1

A1-A1000(名称):
Doe,John
例如简

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

Sheet2中

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

D2-D1000(生日):
匹配的生日在这里居住

实际上,我需要比较两张表中数以千计的值,如果它们的行具有匹配的名称,我需要将Sheet1的行中的出生date放入相应的名称到Sheet2的D列中。 任何人有任何想法去做这个?

感谢您的帮助,我对excel没有经验,所以我是新手。

请看一下vlookup函数。 你可以在这里find文档: VLOOKUP函数

我把这个放到Sheet1中(列B空白):

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

在Sheet2中,我把JohnAndyJane放在A1,A2和A3。

在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 

它find了约翰和简,并回到了他们的生日。 它没有find安迪,所以它显示#N / A。

(以下是编辑2,从操作系统询问一些分支问题的意见。)

复制公式,使用向下填充

而不是Ctrl-C + Ctrl-V,有键盘快捷方式将公式向下复制到列中。 点击B1突出显示它。 然后按住Shift键并按两次向下箭头。 现在B1,B2和B3突出显示。 然后按Ctrl-D填充公式。 如果做得正确的话,B3中应该有与B1相同的公式。 您可以重复使用相同的技术,但可以使用Shift + PageDn十次(然后按Ctrl-D)将公式复制250次。

格式化一列成为date

点击包含数字的列,然后将格式下拉列表中的内容从“常规”更改为“短date”。 这会将单元格的格式从例如21567 (内部Excel表示)切换到1/17/1959

添加一条错误消息

在评论中,OP询问如何得到错误信息,而不是#N / A。 可以把VLOOKUP另一个函数,即IFNA 。 例如,

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

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

你在正确的轨道上,但你有你的专栏在错误的地方。

比赛是你用来find比赛,所以它应该是:

 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)) 

一个注意,如果名称没有find它会返回一个错误,你可以捕捉与IFERROR错误,并返回其他的东西:

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

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

我想你只是把你的比赛搞糊涂了。

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