excel查找:两列之间的部分匹配如果不匹配,请删除一个字符,然后重试
在excel中,我有两列A和B。A列是原始数据,B列是查找数据。C列是结果数据 如果A在B中匹配(完全匹配),则获取B的值,如果不完全匹配,则删除最后一个字符并尝试直到匹配为止。如果一个字符一个字符地删除后仍没有匹配项(对整个单词重复),则需要输入NA(不可用) 是否可以在excel中实现这一点?我试过用VLOOKUP,但我不知道如何循环 例如:excel查找:两列之间的部分匹配如果不匹配,请删除一个字符,然后重试,excel,excel-formula,Excel,Excel Formula,在excel中,我有两列A和B。A列是原始数据,B列是查找数据。C列是结果数据 如果A在B中匹配(完全匹配),则获取B的值,如果不完全匹配,则删除最后一个字符并尝试直到匹配为止。如果一个字符一个字符地删除后仍没有匹配项(对整个单词重复),则需要输入NA(不可用) 是否可以在excel中实现这一点?我试过用VLOOKUP,但我不知道如何循环 例如: A B c(Result) Samsung
A B c(Result)
Samsung Samsung Samsung
Samsungflexwash honeywell Samsung
Samsungsbf 3M Samsung
honeywelllyric honeywell
A Column:
Samsung
Samsung
Samsungflexwash
Samsungsbf
honeywelllyric
honeywelllyric
B Column:
3M
Samsung
honeywell
谢谢,在
C1
中使用此数组公式并填写:
C1
=INDEX(B:B,MATCH(1,FIND($B$1:$B$10,A1),0))
CtrlShift输入
p、 s.避免使用数组公式的整列,因为它会减慢速度。在公式中使用合理的行数。我用了B1:B10
但是你可以用上千,但是不要用满B:B
一些解释
在数组公式中,表达式
FIND($B$1:$B$10,A1)
将生成一个数组,其中每个条目i
是在单元格A1
中找到单元格Bi
内容的位置(如果未找到,则为NA)。然后MATCH
函数在此数组中找到FIND
返回的1
位置;因为我们的目标是在B中找到一个与A1
开头匹配的单元格。最后,INDEX
使用此位置并从B列返回匹配的单元格。这里是一个非CSE数组类型的公式。它被正常地输入
它也是动态的。它将只遍历列B中包含值的行。因此,它不会进行任何不必要的迭代,并且会根据B列中的值的数量而增长或收缩
=INDEX(B:B,AGGREGATE(15,6,ROW($B$1:INDEX(B:B,MATCH("zzz",B:B)))/(ISNUMBER(MATCH($B$1:INDEX(B:B,MATCH("zzz",B:B)) & "*",A1,0))),1))
Scott-你能给我解释一下公式吗。当我尝试时,我得到了#NUM!。我所做的是,我复制了一列中的所有源数据和B列中的所有查找数据。在C列中,我使用了公式。如果我做错了,请告诉我。你用的是什么Excel?旧的没有骨料。灰-你能给我解释一下公式吗。当我尝试的时候,我感到很不舒服。这是我尝试的“=INDEX(B:B,MATCH(TRUE,ISNUMBER(MATCH(B:B&“*”,A1,0)),0))”我所做的是,我复制了列中的所有源数据和列中的所有查找数据。在C列中,我使用了公式。如果我做错了,请告诉我