我有两个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没有经验,所以我对这一切都不熟悉。
答案 0 :(得分:3)
请查看vlookup
功能。您可以在此处找到文档:VLOOKUP function
我把它放入Sheet1(列B为空白):
John 12/25/1990
Jane 1/1/2000
在Sheet2中,我在A1,A2和A3中放置了John
,Andy
和Jane
。
在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询问了一些分支问题。)
除了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))