如何根据excel两列相似内容匹配出对应的值?

向各位大佬请教!G2和B2的内容有差异(有一些确实没有),但有相同的字母,如何才能用高相似度匹配(至少4个字母相同)出来然后把F2的代码改用C2的代码? 已经想了很多办法,搜了很多相同的资料都不行,不行只能手动一个个弄了

你是以规格核对,还是以代码核对?如果以规格核对,那么可以使用数组公式,也可以使用VBA。 如果数据量很大,用数组公式会很慢,具体情况要看你的要求而定。
如果你要求至少四个字母相同,那么,是包括横杠吗? 汉字是不是要去掉? 另外,有没有可能出现四个字母相同的有很多组合的情况,不是唯一值,那么遇见这种情况的时候怎么办?
公式会很复杂, 不是每个人都能做的。不管是公式,还是代码,我都能做到,但是都不免费,这个有点复杂。需要耗费很多精力和时间的。需要原表发过来做。可私信。
当然,如果你坚持要自己做,那么可以给你提供一下思路。由于VLOOKUP和MATCH函数第一个参数虽然支持通配符,但是不支持数组的。所以这两个函数要排除。因为如果你要求最少核对上四个字母,那么汉字要去除,如果汉字都在最后,倒是好说,可以用midb函数来解决,如果不定位置,则需要最新版本的excel,支持textjoin函数的才好解决。如果可以包含汉字,对上四个汉字也算的话,那么这个步骤可以忽略。然后用mid函数将数据拆分,拆分规则是每个字符开头都要拆分,每组四个字符长度。一直拆分到倒数第四个开头的那个位置。可能用到len和indirect函数。然后把要核对的数组也如此拆分,并用row函数对应上相应的行号。拆分之后将对应行号和拆分的数据全部转置,以便交叉核对,再用数组交叉核对的方法进行核对,一旦有对上的,返回相应的行号。最后求最小的行号和最大的行号,再返回相应行相对应的位置。这个公式十分复杂,我现在脑子里只能有个梗概的思路,要写起来会十分麻烦。所以说会耗不少的精力和时间,只有你数据量大才值得写。
用VBA代码可能更容易实现一些。因为函数公式数组处理会很麻烦。那么用VBA的话,可以将数据拆分成数组,写入字典。然后再用字典核对,核对上的再返回相应的数组或者字典对应的值就可以了。这是VBA的思路。 当然,VBA虽然实现起来容易,但是写代码和测试也要耗费不少精力和时间。可能比写公式耗费的时间更多。不过不会那么难。且写代码需要VBA的编程基础,所以如果你会vba的编程基础的话,可以考虑这个思路。
总之,肯定有办法批量处理,但是需要你这边有清晰的逻辑,例如如果遇见两个不同的行,都有四个字符以上对得上,这个怎么办?以谁的为准等等,这些逻辑要清晰沟通了之后才可以做的。
最后说一下, 如果数据量不大,建议手工处理,如果数据量较大,耗费你的时间和精力比较多,比如可能需要十几个乃至几十个小时去做,或者以后要经常处理这类的事情,建议用VBA更好一些。毕竟代码运行,几分钟甚至几秒就可以完成了。虽然写起来很费劲很费精力。
如果处理的有时候不太相同,但是大体规律相同,每次数据量又不是非常大,但又经常处理的情况下,可以考虑学习一下公式。毕竟公式更灵活一些。但是需要多少有点公式函数基础。这样的话理解起来更容易一些。
如果还有问题,欢迎继续追问或者私信。欢迎关注。
补充一下,如果实在不行,可以使用辅助列, 用mid拆分,可能对于一般人来说更容易实现一些。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-04

要现有规则,才能让excel为你工作~

也就是说,你需要告诉它,那个可以做,那个不可以做!

你搜索的规则是什么,建议去了解一下正则式~

你需要在B列里找到与G列匹配或完全匹配的数值...

完全匹配不用解释,那么你所谓的至少4个字符相似,有明确的位置或者指定字符么?

比如:AA053-M-12-R-A   我想找到只要名称为AA053的也可以,我要找到包含M-12-R-A的也可以, 我要找到同时包含AA-M-R-A的也可以, 

总之,你需要有一个指定的条件来告诉excel, 你要给他这些规则,它才会帮你去找出对应的值!

你整一句只要高度相似,咋个算高度相似?

AA053-M-12-R-A   把你不明确查找的字符换成 "*"代替,然后去查找匹配,参考一下图示~

excel通配符示例

只能帮你到这里了!!!

追问

比如我想匹配AA053的代码,那要怎么写公式呢?我不能直接指定要找AA053吧?我想要的是只要2个值中的相似就带出C列对应的代码,就像你说的只要名称为AA053的