各位讀者朋友們大家好,今天來給大家說一下如何用VLOOKUP函數進行一對匹配。這個技巧在實際工作也是非常常用,通常問的朋友也比較多,今天就來給大家詳細介紹一下。
首先來看一下一對多匹配是什麼意思,顧名思義就是一個查找值對應多個結果,如下圖所示,比如一個班級有多名同學,我們怎麼能夠一次性將二班的同學匹配出來?這就是我們今天要講解的用法。
首先我們來分析一下,如果要將二班全部匹配出來,直接用二班匹配肯定是不行的,根據VLOOKUP的特性,只能匹配到第一次二班對應的同學。那要想將二班對應的同學全部找出來,就要將這些同學所在行對應的二班做出區分,比如,二班1,二班2,二班3……以此類推,而我們匹配的時候也用二班1,二班2,二班3這樣對應的內容去匹配,是不是就可以匹配出來了呢?
思路有了,就看如何實現。首先是如何將二班進行編號,我們觀察發現二班後面的數字,實際上就是二班這個關鍵字從上到下第幾次出現的次數。那麼我們就可以用COUNTIF來判斷出現次數,那我們就添加一個輔助列來實現出現次數。我們來對班級進行擴展選區的計數=COUNTIF(B$2:B2,B2)注意這裡參數的寫法,條件區域我們對前半部分絕對引用,後半部分相對引用,是為了讓它在我們下拉公式的時候,這個區域自動擴展,從而得到計算出現次數的效果。可以看到我們標黃的部分就是二班所在的位置,分別對二班出現次數進行了編號,如下圖所示:
但是到這裡,還沒達到我們需要的二班1,二班2,二班3……這樣的效果,其實有了數字就已經很接近了,只需要將數字所在的單元格與這個數字進行連接即可,公式=B2&COUNTIF(B$2:B2,B2),效果如下:
第二步,我們將相同的班級進行了區分之後,就只需要用對應的班級+編號去匹配即可,那如何生成隨著單元格下拉而生成的二班1,二班2,二班3呢?我們可以用ROW函數,這個函數與COLUMN函數的功能恰好相反,它是用來獲取參數單元格的行號,用法如下:
而有了這個函數後,我們的匹配值是不是就可以用要匹配的班級連接ROW函數,在下拉的時候是不是就可以自動生成二班1,二班2,二班3……用法如下:
以上兩個問題解決之後,我們發現,這時候直接用VLOOKUP函數匹配即可,最終整理結果如下:
但是我們發現二班的同學是全部找出來了,但是後面存在一些錯誤值,這是因為二班總共就只有4位同學,到第五個單元格時,查找值就是二班5,但是數據源中並沒有二班5了,自然就會出現錯誤值。為了讓表格美觀,我們可以在外層嵌套一層iferror函數,讓它出現錯誤值的時候顯示空白即可=IFERROR(VLOOKUP(I$1&ROW(A1),$A$1:$G$22,3,),"")
到這裡我們就完成了VLOOKUP函數的一對多匹配,其實寫函數並不困難,重要的是思路,我們每一篇文章都在給大家講解思路,一步一步帶著大家去完成操作,讓大家知其然且知其所以然。
寫在最後,原創不易,請大家多多支持,期待與大家互相學習,共同進步!