MS Excel - 两张纸之间匹配3列。找到匹配项后,将第4列复制到第3页

时间:2016-11-25 00:29:58

标签: excel excel-formula

当所有三列“姓氏,名字和DOB”在两张纸之间的任何行上匹配时,我需要在第三张纸上列出匹配行中的帐号。每张表中有数千行。某些帐户可能会有多个匹配项。我更喜欢将功能放在第3张纸上,以便我可以更改前2张中的列表而无需更新它们。

Sheet1          
Acct #  Last Name   First Name  DOB
89158   Stevens     John        1/23/2012

Sheet2          
Acct #  Last Name   First Name  DOB
124578  Stevens     John        1/23/2012

Sheet3          
Sheet1 Acct #   Sheet2 Acct#
89158           124578  

提前谢谢!

2 个答案:

答案 0 :(得分:0)

这适用于重复值

公式将需要作为数组输入(一旦复制并粘贴,但仍然在公式栏中点击 CTRL + SHIFT + ENTER )并调整范围以适合您的总价值。

=IFERROR(INDEX(Sheet1!$A$2:$D$50,MATCH(1,($C2=Sheet1!$B$2:$B$50)*($D2=Sheet1!$C$2:$C$50)*($E2=Sheet1!$D$2:$D$50),0),1),"No match found")

可以再次使用完全相同的公式,将Sheet1!更改为Sheet2!

这将搜索Sheet3!C2中的姓氏,Sheet3!D2中的名字和Sheet3!E2中的DOB。

我只是锁定了列,以防您希望将其用于大量数据并希望将其拖下来。

如果您想显示符合搜索条件且仅使用表3搜索一个人的其他帐号,则需要查看使用INDEX()MATCH()SMALL()

我也希望在我的回答中包含这个替代方案,但我现在正离开办公室。如果你挣扎,我不会花很长时间来召唤你,所以请给我一个评论,我很乐意解释它是如何运作的。

编辑:列出搜索条件中找到的所有ID - 将空白留在未找到的位置

=IFERROR(INDEX(Sheet1!$A$2:$D$50,SMALL(IF(COUNTIF($C$2,Sheet1!$B$2:$B$50)*COUNTIF($D$2,Sheet1!$C$2:$C$50)*COUNTIF($E$2,Sheet1!$D$2:$D$50),ROW(Sheet1!$A$2:$D$50)-MIN(ROW(Sheet1!$A$2:$D$50))+1),ROW(Sheet1!1:1)),1),"")

再次,将第1张替换为第2张并更新范围以匹配您搜索的内容,使用 CTRL + SHIFT + ENTER 在公式栏中,为了使公式成为一个数组,然后你可以将其向下拖动以涵盖所有可能的匹配,最好瞄准你认为最重复的ID数量。

让我知道你是如何得到的,如果这回答你的问题,请用左边的勾选标记为答案,谢谢。

答案 1 :(得分:0)

我最终将列表A和列表B放入表格然后使用此公式:= ISNA(MATCH(B2& C2& D2,I:I& J:J& K:K,0))然后我创建了另一张表,我添加了列表B,然后列出A并使用相同的公式。完成每张工作表的计算后,我使用过滤器仅列出每个电子表格中第一个列表的匹配项。

然后我拿了每张纸的比赛并在第三张纸上并排列出。我确保两个列表之间的排序匹配,然后能够一次滚动页面并识别每个系统中具有多个帐号的几个用户。

它不像我想的那样自动化,但它现在已经完成了。谢谢Stack Overflow!