Excel formula 使用vlookup公式时的部分匹配

Excel formula 使用vlookup公式时的部分匹配,excel-formula,vlookup,Excel Formula,Vlookup,我试图用另一张工作表中的数据填充工作表中的空列。为此,我依赖于VLOOKUP 这是我的公式 =VLOOKUP(RC[-6],Sheet2!C[-3]:C[-2],2,FALSE) 我在表格中查找一个名称,并从该行获取值。但有时我面临的问题是sheet2中的值(我必须在这里做vlookup),它实际上是一个人的名字,没有中间名。它只有名字和姓氏。由于查找值是中间名,因此在这种情况下,查找不会产生任何结果。因此,计划是仅使用first和lastname进行查找,即使查找值中有中间名。我们如何才能做

我试图用另一张工作表中的数据填充工作表中的空列。为此,我依赖于
VLOOKUP

这是我的公式

=VLOOKUP(RC[-6],Sheet2!C[-3]:C[-2],2,FALSE)
我在表格中查找一个名称,并从该行获取值。但有时我面临的问题是sheet2中的值(我必须在这里做
vlookup
),它实际上是一个人的名字,没有中间名。它只有名字和姓氏。由于查找值是中间名,因此在这种情况下,查找不会产生任何结果。因此,计划是仅使用first和lastname进行查找,即使查找值中有中间名。我们如何才能做到这一点

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

您可以将星号
*
用于任意数量的字符,或者将
用于一个字符

  • 因此,如果您的搜索词是
    唐纳德·特朗普
    ,但您也想找到
    唐纳德·约翰·特朗普
    ,那么您需要添加一个星号
    唐纳德·特朗普

    =IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=1,LEFT(A1,FIND(" ",A1)-1) & " *" & RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
    
    =IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=2,LEFT(A1,FIND(" ",A1)-1) & " *" & RIGHT(A1,LEN(A1)-FIND(" ",A1,FIND(" ",A1)+1)),A1)
    
  • 或者,如果您的搜索词是
    唐纳德·约翰·特朗普
    ,但您还想查找
    唐纳德·特朗普
    ,则需要将中间名替换为星号
    唐纳德·特朗普

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

然后,您可以使用上面的公式作为VLOOKUP中的第一个参数,或者使用一个helper列,这样您就可以看到实际的搜索词是什么。

执行
If
如“If VLOOKUP(带中间名)=no result then VLOOKUP(不带中间名)”可以工作。但查找值仅来自单个单元格。它不在行的不同单元格中。因此,查找值可能类似于Donald John Trump。但在搜索表中,只有Donald Trump可用。是否有示例数据?是否也对其进行了重新标记。您不需要VBA解决方案,是吗?您可以喜欢搜索
FirstName*LastName
Th如果您需要将
Donald Trump
中的空格替换为
“*”
请注意星号前后的空格(仅当只有一个空格时替换,如果有两个空格,则已经有一个中间名)。@Pᴇʜ但由于查找值来自单个单元格,我们如何从中区分firstname或lastname。