【问题标题】:Partial match when using vlookup formula使用 vlookup 公式时的部分匹配
【发布时间】:2018-02-20 08:00:57
【问题描述】:

我正在尝试用另一个工作表中的数据填充工作表的空列。为此,我依赖VLOOKUP

这是我的公式

=VLOOKUP(RC[-6],Sheet2!C[-3]:C[-2],2,FALSE)

我正在寻找工作表中的名称并从该行中获取值。但我面临的问题有时是 sheet2 中的值(我必须在哪里做vlookup),这实际上是一个人的名字没有中间名。它只有名字和姓氏。由于查找值作为中间名,在这种情况下查找不会产生任何结果。所以计划是只用名字和姓氏进行查找,即使查找值中有中间名。我们怎样才能做到这一点

例如,我们的查找值 (RC[-6]) 可以是 Donald John Trump。但在搜索表 (Sheet2) 中,名称只能是 Donald Trump。所以结果我需要Donald Trump 行,但这不是因为我们有Donald John Trump 作为查找值。

【问题讨论】:

  • 执行If 类似“如果 vlookup(with middle name) = no result then vlookup(w/o middle name”可以工作。
  • 但查找值仅来自单个单元格。它不在该行的不同单元格中。因此,查找值可能类似于唐纳德·约翰·特朗普。但在搜索表中只有唐纳德特朗普可用。
  • 你有样本数据吗?还重新标记了它。您不需要 VBA 解决方案吗?
  • 你可以use wildcards in vlookup 像搜索FirstName * LastName 这样你就需要将Donald Trump 中的空格替换为" * " 注意星号前后的空格(仅在有只有一个空格,如果有 2 个空格则已经有中间名)。
  • @Pᴇʜ 但是由于从单个单元格中查找值,我们如何区分名字或姓氏。

标签: excel-formula vlookup


【解决方案1】:

您可以use wildcards in VLOOKUP 为任意数量的字符添加星号*,或为一个字符添加?

  • 所以如果您的搜索词是Donald Trump,但您还想找到Donald John Trump,那么您需要添加一个星号Donald *Trump

    =IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=1,LEFT(A1,FIND(" ",A1)-1) & " *" & RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
    
  • 或者,如果您的搜索词是 Donald John Trump,但您还想找到 Donald Trump,那么您需要用星号替换中间名 Donald *Trump

    =IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=2,LEFT(A1,FIND(" ",A1)-1) & " *" & RIGHT(A1,LEN(A1)-FIND(" ",A1,FIND(" ",A1)+1)),A1)
    

然后,您可以将上述公式用作 VLOOKUP 中的第一个参数,或使用辅助列,以便查看实际的搜索词是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多