这个是一个典型的查找近似线索 , 模糊匹配的案例 , 第一个反应一定会用到查找函数find , 数据匹配自然会想到vlookup或lookup函数 , 那么我们赶紧来试试这个场景的问题如何解决?
为了方便理解 , 换成这样的场景 , A列为公司简称 , B列为产品 , C列这是A列在B列存在的公司简称自动的匹配到C列 。
文章插图
利用lookup+find的超级组合函数就可以搞定这个问题 。 具体看操作:
文章插图
是不是很快就批量解决这个问题 , 但相信大家会有疑问 , 什么是lookup的第一个参数是0?为什么find函数前面带个减号 , 为什么find函数的第一个参数是个区域 , 而不是单独的查找文本 。 如果能把这些问题搞清除也是真正的掌握这两个函数的搭配使用 。 事实上这两个函数的这种组合 , 在牛闪闪看来就是一个“偏方”解决法 。
我们先来搞清楚 , 为什么会想到查找0 , 因为lookup函数有个定理如下:
如果 LOOKUP 函数找不到 lookup_value(下图中的0) , 则该函数会与 lookup_vector (下图B列)中小于或等于 lookup_value(下图A列) 的最大值进行匹配 。
上面这句话你可能看不懂 , 牛闪闪举个栗子 , 应该就能懂了 。
发现了什么现象 , 查找0对应B列在A列对应的数据 , 匹配到C列 。 刚开始B列没有 , 所以C2单元格报错 , 但只要B列对应的数值小于查询值0 , 就会显示A列对应的公司 。 是不是这样!
文章插图
所以你需要做的事情就是 , 在产品B列中 , 只要让包含公司名称的产品产生对应的负数区域即可 。
也就是D1要得到腾讯 , 这B的区域一定是(B2空 , B3负数 , B4空) 。 D2要得到百度 , 则B列区域一定是(B2空 , B3空 , B4负数) 。 以此类推 , 你会发现如果手工去改 , 会导致D列所有的匹配都发生变化 , 这样就需要实现更强大的功能 , D列公式进行向下拖拽的时候B列的负数的区域动态变化的 , 才能实现批量的对应关系 。
文章插图
所以这个时候find函数出场 。 Find函数的默认用法这样 。 =-FIND("微",C2)
比如要在“微”字在C2单元格中的位置 , 返回微字在第三个 , 所以B2单元格返回3 , 如果加入负数 , 就是-3 , 所以很像我们前面得到那种负数效果 。 但仔细想会有问题 , 这个微字是要匹配微软啊 , 怎么匹配到微信去了 。 所以用find正常的用法绝对是行不通的 。
文章插图
所以用到find的这种用法 , -FIND($D$2:$D$4,A2) 同时查找多个字 , 然后进行逐个的返回字的个数 , 找的到就是数字 , 找不到就报错 , 相当于单元格空 。
如果回到之前写好的公式 , 利用公式求值这个功能 , 就能理解了 , 你会发现B列的动态区域就是靠find函数产生的负数 , 正好对应公司简称 。 大家一定多操作仔细体会 。
文章插图
总结:Find+Lookup函数的使用绝对是两个函数的“超级偏方“组合才能得到结果 , 非一般的人物是绝对想不到的 。 所以大家请记住这个“固定“搭配吧 。
【excel 如何把B列中含有A列的相同字符显示在C列?】
推荐阅读
- 如何利用Excel做双列双堆积柱形图 excel双列双堆积柱形图如何制
- 如何利用Excel设计一个唱票统计系统?
- 如何设置Excel图表的局部数据标记点
- excel 如何批量合并起止日期到一个单元格?
- 如何控制excel单元格录入相同内容的次数?
- excel2013打印预览功能
- excel对数据编辑的操作方法
- excel2013中插入和删除单元格
- excel中的数据类型
- excel的自动填充功能