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。