[Excel] 雙(多)條件Vlookup比對 & 同名同姓比對問題
最近收到一個我之前沒想到但卻非常實用的問題,之前我介紹的Excel試算表vlookup比對教學都是針對單一條件去比對,如果超過一個條件,可能就會比對出不正確的值,這樣講有點抽象,直接來看範例題目吧!
範例問題
目前老師手上有兩張表格,分別為工作表A與工作表B。工作表A如下圖1所示,內有班級、姓名以及電話資訊;另外工作表B如圖2所示,一樣有班級、姓名,但這張表缺少了學生的電話,因此我們希望把工作表A中的電話資訊利用vlookup自動比對的方式,填入工作表B中的C欄位中。


利用VLOOKUP函數直接比對產生的問題
這時我們知道可以使用Vlookup函數將表B的B欄位去比對表A的B:C欄位,但仔細看了一下發現這樣比對會出問題,因為有姓名相同/資料重複的問題,在三年二班與三年三班都有個人叫做甲伯思,這樣一旦比對下去,Excel系統只會去抓取第一筆資料,也就是不管是三年二班或是三年三班的甲伯思電話通通只會比對到三年二班的甲伯思電話,因為他是表個中由上而下查詢的第一筆資料。此時我們知道必須把班級的條件納入比對條件中,才可以避免掉這種狀況。
但目前找到的多條件比對看起來都很麻煩也很難,這邊我們簡單利用一個小技巧,就可以繼續使用熟悉的vlookup函數來解決這樣的狀況。
步驟一、加入輔助欄位
這邊我們在工作表A中,原本的班級行前面加入一個新的輔助欄位如下圖,我把它叫做「B+C」,換言之就是把B(班級)與C(姓名)結合成一個欄位。
公式 =B2&C2

步驟二、開始VLOOKUP !
回到工作表B,點選C2欄位 (三年一班蘿蔔姿),然後開啟VLOOKUP函數的設定視窗,如下圖4。
公式:=VLOOKUP(A2&B2,工作表A!A:D,4,0)
說明:
- Lookup_value:A2&B2,因為剛剛我們要比對的工作表A中輔助欄位已經將班級與姓名合併成為一個值了,因此現在也同樣的要把這邊合併成一個值去比對。
- Table_array:工作表A!A:D,這邊你不用自己打這些字,你直接點下table_array格子後點底部工作表A的標籤,然後將按住上方A往右拖拉至D放開,即可設定完成這個公式。
- Col_index_num:4, 因為工作表A中我們要比對的值由左往右數過來第四行,因此為4。
- Range_lookup:0,代表我們要完全比對。


步驟三、複製公式,完成!
將滑鼠移動到A2欄位的右下角,會出現一個粗粗的白色加號,快速點兩下或是按住往下拉即可快速的將公式複製下去底下的欄位中。
複製完成後,檢查一下電話號碼是否正確,正確的話就搞定囉!若資料很多,就抽檢多筆驗證,即可知道整體資料正確性如何。
