【问题标题】:Excel formula to search partial match and align rowExcel公式搜索部分匹配和对齐行
【发布时间】:2015-03-12 21:00:31
【问题描述】:

我在 Excel 中有 2 列数据,如下所示:

有人可以帮我在 C 列中编写一个公式,该公式将从 A 列中获取名字或姓氏,并将其与 B 列匹配,然后将值粘贴到 C 列中。下图将为您提供确切的想法我正在努力做。谢谢

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    由于您的数据不是“常规”数据,您可以尝试使用通配符来查找姓氏的公式。

    =INDEX($B$1:$B$4,MATCH("*" &MID(A1,FIND(" ",A1)+1,99)&"*",$B$1:$B$4,0))
    

    如果第一部分遵循一些规则会更简单,但有些则在开头有名字的首字母;最后还有其他人。

    编辑: (添加说明)

    FIND 返回第一个space 的字符号 加 1 得到下一个单词的字符数 使用MID 提取该单词

    MATCH 中使用该词(前后使用通配符),以便在电子邮件地址数组中找到它。这将返回它在数组中的位置(行号)

    使用该行号作为INDEX 函数的参数来返回实际的电子邮件地址。

    如果您想首先检查电子邮件地址,您需要确定哪些字母构成姓氏。由于根据您的示例这不是常规的,因此您需要检查这两个选项。

    您将无法从电子邮件中查找名字,因为它不存在。

    如果你能保证第一部分将遵循一个或另一个的规则,例如:要么

    • FirstInitial姓氏或
    • 名字首字母

    那你可以试试这个:

    =IFERROR(INDEX($B$1:$B$4,MATCH(MID(A1,FIND(" ",A1)+1,99)& LEFT(A1,1) &"*",$B$1:$B$4,0)),
    INDEX($B$1:$B$4,MATCH( LEFT(A1,1)&MID(A1,FIND(" ",A1)+1,99) &"*",$B$1:$B$4,0)))
    

    【讨论】:

    • 太棒了!它就像一个魔术!仅查找姓氏很酷,因为大多数电子邮件 ID 都包含姓氏。 1)但如果我只想查找名字,我需要在公式中修改什么?,2)如果我想反转,即从邮件 id 'wyattm@uapb.edu' 搜索'wyatt'并对齐' Mascot Wyatt' & 3) 如果我从电子邮件 ID 中查找名字并对齐全名。这三个公式是什么,你能回答吗?
    • 这不是一个代码/公式编写网站。我将在我的答案中添加对其工作原理的解释。这应该使您能够根据自己的需要弄清楚如何对其进行修改。
    【解决方案2】:

    这似乎可以满足您的需求。

    =IFERROR(VLOOKUP(LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&LOWER(MID(A1,1,1))&"*",$B$1:$B$4,1,FALSE),VLOOKUP(LOWER(MID(A1,1,1))&LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&"*",$B$1:$B$4,1,FALSE))
    

    它很长很疯狂,而且分解成列而不是一个庞大的公式可能更容易消化和调试。

    它基本上是通过在空间上拆分来使 FLast 和 FirstL 脱离名称字段。

    最后一个:

    =LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))&LOWER(MID(A1,1,1))
    

    和FirstL:

    =LOWER(MID(A1,1,1))&LOWER(MID(A1,(SEARCH(" ",A1)+1),LEN(A1)))
    

    然后我们使用通配符对这些进行 2 个 vlookup:

    最后一个:

    =VLOOKUP([lastfirst equation from above]&"*",$B$1:$B$4,1,FALSE)
    

    和FirstL:

    =VLOOKUP([firstlast equation from above]&"*",$B$1:$B$4,1,FALSE)
    

    然后将它们包装在 IfError 中,以便它们都可以尝试:

    =IfError([firstLast vlookup],[lastfirst vlookup])
    

    问题在于,如果您需要编辑,那将是地狱般的编辑,这就是为什么我建议在另一列中完成每一部分,然后参考前一列。 您还需要注意,此答案将被基本相同的名称绊倒 - 例如无论 ssmith 的第一个条目是什么,Sam Smith 和 Sasha Smith 都会匹配。这里的任何解决方案都可能有同样的陷阱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2017-03-22
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多