返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配

Posted

技术标签:

【中文标题】返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配【英文标题】:Formula for returning value where first word in one column matches AND last four digits of another column does 【发布时间】:2017-12-11 11:29:18 【问题描述】:

所以,我有一个包含 100.000 多个姓名、电话号码和电子邮件的 Excel 表格,以及另一个包含姓名和电话号码最后四位数字的表格,例如。

在表 1 中

A || B
Johnny Applesauce || xxxx1934
Jane Delaney Applesauce || xxxx3221

在第 2 页(“完整”)中

A || B || C || D
ID || Johnny Applesauce || 45191934 || johnny@applesauce.com
ID2 || David Useless || 48123221 || dave@example.com
ID3 || Jane Applesauce || 32193221 || jane@applesauce.com
(and 99,999+ other people)

如何在表 1 中创建一个公式,与表 2 中的“完整”人员列表进行比较,并且当且仅当

    名字的第一个字是一样的 电话号码的后四位相同

我一直在尝试执行 =INDEX(full.D$2:D$166856;MATCH(RIGHT(B2;4)&LEFT(A2;FIND(" ";A2)-1);RIGHT(full.C$2:C$166856;4)&LEFT(full.B$2:B$166856;FIND(" ";full.B$2:B$166856)-1);0)) 之类的操作,但我无法让它正常工作 - 我只是收到一堆 #N/A 和 #VALUE!

【问题讨论】:

【参考方案1】:

在 Excel 中,使用表格和结构化引用,您可以使用此公式(通常输入)返回匹配数据的电子邮件

=INDEX(fullTable,AGGREGATE(14,6,(LEFT([@Name],4)=LEFT(fullTable[Name],4))*(RIGHT([@Phone],4)=RIGHT(fullTable[Phone],4))*ROW(fullTable),1)-ROW(fullTable[#Headers]),4)

fullTable 是您在工作表 2 上的表格

如果有多个匹配,它的编写方式将返回最后一个匹配。它也可以写成返回第一个匹配,甚至是多列中的多个匹配。我将这些更改留给您。

【讨论】:

谢谢!我从来不知道 AGGREGATE 可以在这种情况下使用。干得好:) @user14040 AGGREGATE 的另一个不错的功能是它可以忽略错误。【参考方案2】:

如果您有多个条件匹配(用 & 分隔),那么您需要按 Ctrl-Shift-Enter。试试看是否有帮助。

【讨论】:

以上是关于返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配的主要内容,如果未能解决你的问题,请参考以下文章

仅返回一列中的日期与另一列中的日期最接近的行?

从另一列的子字符串更新一列

将一列中的文本与另一列匹配(vlookup + like)

在python中,我如何对一列中每个值与另一列中的值发生的次数(多少行)建立矩阵?

返回与另一列中的最小值匹配的 ID 行 [重复]

根据与另一列的部分匹配创建新列