excel 如何把B列中含有A列的相同字符顯示在C列?



這個是一個典型的查找近似線索 , 模糊匹配的案例 , 第一個反應一定會用到查找函數find , 數據匹配自然會想到vlookup或lookup函數 , 那么我們趕緊來試試這個場景的問題如何解決?
為了方便理解 , 換成這樣的場景 , A列為公司簡稱 , B列為產品 , C列這是A列在B列存在的公司簡稱自動的匹配到C列 。

excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖

 



利用lookup+find的超級組合函數就可以搞定這個問題 。 具體看操作:
excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖

 



是不是很快就批量解決這個問題 , 但相信大家會有疑問 , 什么是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列對應的公司 。 是不是這樣!
excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖



所以你需要做的事情就是 , 在產品B列中 , 只要讓包含公司名稱的產品產生對應的負數區域即可 。
也就是D1要得到騰訊 , 這B的區域一定是(B2空 , B3負數 , B4空) 。 D2要得到百度 , 則B列區域一定是(B2空 , B3空 , B4負數) 。 以此類推 , 你會發現如果手工去改 , 會導致D列所有的匹配都發生變化 , 這樣就需要實現更強大的功能 , D列公式進行向下拖拽的時候B列的負數的區域動態變化的 , 才能實現批量的對應關系 。
excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖

 



所以這個時候find函數出場 。 Find函數的默認用法這樣 。 =-FIND("微",C2)
比如要在“微”字在C2單元格中的位置 , 返回微字在第三個 , 所以B2單元格返回3 , 如果加入負數 , 就是-3 , 所以很像我們前面得到那種負數效果 。 但仔細想會有問題 , 這個微字是要匹配微軟啊 , 怎么匹配到微信去了 。 所以用find正常的用法絕對是行不通的 。
excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖

 



所以用到find的這種用法 , -FIND($D$2:$D$4,A2) 同時查找多個字 , 然后進行逐個的返回字的個數 , 找的到就是數字 , 找不到就報錯 , 相當于單元格空 。
如果回到之前寫好的公式 , 利用公式求值這個功能 , 就能理解了 , 你會發現B列的動態區域就是靠find函數產生的負數 , 正好對應公司簡稱 。 大家一定多操作仔細體會 。
excel 如何把B列中含有A列的相同字符顯示在C列?

文章插圖

 



總結:Find+Lookup函數的使用絕對是兩個函數的“超級偏方“組合才能得到結果 , 非一般的人物是絕對想不到的 。 所以大家請記住這個“固定“搭配吧 。
【excel 如何把B列中含有A列的相同字符顯示在C列?】

推薦閱讀