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中,我把John
, Andy
和Jane
放在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))