Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel查找:两列之间的部分匹配如果不匹配,请删除一个字符,然后重试_Excel_Excel Formula - Fatal编程技术网

excel查找:两列之间的部分匹配如果不匹配,请删除一个字符,然后重试

excel查找:两列之间的部分匹配如果不匹配,请删除一个字符,然后重试,excel,excel-formula,Excel,Excel Formula,在excel中,我有两列A和B。A列是原始数据,B列是查找数据。C列是结果数据 如果A在B中匹配(完全匹配),则获取B的值,如果不完全匹配,则删除最后一个字符并尝试直到匹配为止。如果一个字符一个字符地删除后仍没有匹配项(对整个单词重复),则需要输入NA(不可用) 是否可以在excel中实现这一点?我试过用VLOOKUP,但我不知道如何循环 例如: A B c(Result) Samsung

在excel中,我有两列A和B。A列是原始数据,B列是查找数据。C列是结果数据

如果A在B中匹配(完全匹配),则获取B的值,如果不完全匹配,则删除最后一个字符并尝试直到匹配为止。如果一个字符一个字符地删除后仍没有匹配项(对整个单词重复),则需要输入NA(不可用)

是否可以在excel中实现这一点?我试过用VLOOKUP,但我不知道如何循环

例如:

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列中,我使用了公式。如果我做错了,请告诉我