這個問題非常典型,是vlookup函數的另外一種「模糊」的匹配。今天,秦川老師給大家系統總結一下解決此類問題的思路。
分析上圖會發現A表的城市比B表的城市多「測試」兩個字。解決思路想辦法「提取」A表的城市名,(也就是排除「測試」兩個字。)但小夥伴要求不能破壞表格結構,所以我們利用單元格拆分函數來搞定。
=VLOOKUP(LEFT(B4,2),$E$4:$F$6,2,0)
這個公式的重點在left函數,把B列的城市提取從左的2個字符,例如「天津測試」提取出「天津」,正好與B表的天津完全匹配,所以利用vlookup的精確匹配搞定(既最後的參數為0)。
這個問題「完美」的解決,但牛閃閃需要大家舉一反三一下,實際工作中可能碰到下面這樣的情況。
分析上圖會發現城市名稱的位數不一樣,這個該如何處理呢?直接用用文本拆分函數就不行了,但發現「測試」兩個字還是很有規律的2位數,所以用單元格全部位數減去2位數,就得到了城市名稱的位數。
=VLOOKUP(LEFT(B4,LEN(B4)-2),$E$4:$F$6,2,0)
關鍵點在於len長度函數與left函數的搭配使用,獲得從左取減去「測試」兩字之後的位數,從而完美獲取不同長度的城市名稱。
分析上圖發現更麻煩了,測試也不是統一的了,但還是有規律,就是城市名稱結尾都在一個「測」字前,所以我們如果能用函數找到測字所在位數減去1位,不就是從左向右的城市名稱個數。
=VLOOKUP(LEFT(B4,FIND("測",B4)-1),$E$4:$F$6,2,0)
這個公式難點在與find函數,查找「測」字在單元格中的位數減去1,正好就是left函數從左向右的城市名稱位數。
總結:只要能善於發現單元格中的內容規律,總歸有方法能夠想到提取的方法,當然如果能「破壞」表的結構,利用輔助列的方法能讓上面的公式更加能夠理解。
該技巧Excel2010版本以上有效。
End.
作者:秦川牛閃閃(中國統計網特邀認證作者)
本文為中國統計網原創文章,需要轉載請聯繫中國統計網(info@itongji.cn ),轉載時請註明作者及出處,並保留本文連結。