返回值的公式,其中一列中的第一个字匹配,另一列的后四个数字匹配

时间:2017-12-11 11:29:19

标签: excel excel-formula libreoffice libreoffice-calc

所以,我有一张excel表,上面有100.000+个姓名,电话号码和电子邮件,还有另一张带有姓名和电话号码最后四位数的表格,用于表示。

在表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页中的人员列表,当且仅当

时才会返回相应的电子邮件地址
  1. 名字的第一个字是相同的
  2. 电话号码的最后四位数字相同
  3. 我一直试图做=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!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在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中的表格

如果有多个匹配,它的写入方式将返回最后一个匹配。它也可以编写为返回第一个匹配,甚至多个列中的多个匹配。我把这些改变留给你。

enter image description here