返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配
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 可以在这种情况下使用。干得好:) @user14040AGGREGATE
的另一个不错的功能是它可以忽略错误。【参考方案2】:
如果您有多个条件匹配(用 & 分隔),那么您需要按 Ctrl-Shift-Enter。试试看是否有帮助。
【讨论】:
以上是关于返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配的主要内容,如果未能解决你的问题,请参考以下文章