今天的文章是上一篇文章的基礎上更進一步地去解決函數vlookup進行多列數據的匹配問題,所以我們首先來回顧一下上一篇文章的主要內容。在上一篇文章中,我們在函數vlookup進行單列數據匹配的基礎上提出了多列數據的匹配問題的快速解決方法,其實例圖表具體如下所示:
這裡我們通過在H2單元格輸入函數式「=VLOOKUP($G2,$A$1:$E$16,COLUMN()-6,0)」,得出H2單元格的結果之後,我們通過填充柄向左繼而向下拖拽的方式,快速地得出第二張表中所要求解的結果。在這個案例中,我們綜合運用了函數vlookup的精確匹配用法,函數column的基本操作方法以及單元格內容的混合引用和絕對引用方法,然後解決了現有問題。雖然聽上去方法有點多,似乎有點複雜,但是這道案例確實是比較簡單的了。(對上述方法感興趣的朋友們在看完本文之後參考文章函數vlookup匹配單列數據你已學會,那麼同時匹配多列數據呢?,裡面有十分詳盡的解釋)
為什麼上述案例是比較簡單的呢?我們通過上面的實例圖表可以發現,第一張數據源表和第二張表中有一個共同點:那就是客戶ID、公司名稱、聯繫人姓名和地址這四項內容的排布方式是一致的,這就幫助我們解決了一大難題:函數式中第三參數」COLUMN()-6「是指函數vlookup中我們要進行匹配的數據所在列,正因為兩張表中四項數據的排布方式是一致的,所以我們才能用」COLUMN()-6「來進行定位,進而用填充柄拖拽出所有的結果。
現在我們試想一下,如若我們將第二張表中公司名稱、聯繫人姓名和地址的排布順序打亂了,那麼上述函數式也就不成立了,這自然也就增加問題的難度了。那麼我們怎樣解決排布方式不一致這一難題呢?這也就是今天的實例所要解決的問題了。
實例:其實看過上一篇文章的朋友會非常熟悉這個案例,我們的excel表中還是有兩張表,第一張表是數據源表,表頭內容有五項,分別是客戶ID、公司名稱、聯繫人姓名、地址、聯繫人頭銜,下面附有這五項內容的相關數據;第二張表中表頭內容有四項,分別是客戶ID、地址、公司名稱、聯繫人姓名(按表中順序排列),其中客戶ID已知,其他三項內容未知,現在我們的任務是根據第一張表中的數據源和第二張表中已知的客戶ID,運用函數vlookup和函數match去求出未知的地址、公司名稱、聯繫人姓名這三項內容。excel工作表具體如下圖所示:
這道題目正如上文所言,內容幾乎沒有變化,但是兩張表中表頭內容的排序不一致,這就導致上一實例中函數式「=VLOOKUP($G2,$A$1:$E$16,COLUMN()-6,0)」中的第三參數」COLUMN()-6「不再適用,因為它只適用於表頭排序一致的情況。這裡我們就需要利用函數match來幫助我們進行定位工作了。
關於函數match,其基本語法形式是MATCH(lookup_value, lookup_array, [match_type])。在本案例中,我們以H2單元格為例,第一參數lookup_value就是H1單元格的內容,第二參數 lookup_array就是A1單元格到E1單元格區域,第三參數[match_type]為」0「,表示精確匹配。(對於函數match用法感興趣的朋友們在看完本文之後參考文章當函數vlookup無能為力時,函數match和index未嘗不是更好的選擇)
我們嘗試在H2單元格輸入」=MATCH(H1,$A$1:$E$1,0)「,按回車鍵得出結果,具體操作如下圖所示:
從上圖我們可以看出在H2單元格運用函數match,得到的結果為」4「,正好等於第一張表中地址欄所在的列數,那麼函數match確實完成了定位工作了。這時我們可以嘗試著去寫完整的函數式了。
我們在H2單元格輸入」=VLOOKUP($G2,$A$1:$E$16,MATCH(H1,$A$1:$E$1,0),0)「,按回車鍵得出結果」東園西甲 30 號「,同過對比,發現結果是正確的。接下來,我們的工作也就到了最後一步,進行拖拽得出全部結果。但是我們的錯誤都出現在拖拽上,所以我建議我們選中H2單元格分別向右和向下進行拖拽,先驗證一下該函數式是否具有普遍實用性。具體內容可以參考下圖:
從上圖,我們可以看出當填充柄向右拖拽時是沒有問題,但是當填充柄向下拖拽時卻無法進行匹配,為什麼呢?我們來觀察一下發生錯誤的H3單元格的函數式:」=VLOOKUP($G3,$A$1:$E$16,MATCH(H2,$A$1:$E$1,0),0)「。在第三參數」MATCH(H2,$A$1:$E$1,0)「的第一參數應該是「H1」,但是這裡因為向下拖拽卻成了「H2」,最終導致了錯誤的發生。這裡我們要運用到單元格內容的混合引用來解決問題。
在這個案例中,對於函數match的第一參數,要求填充柄向右拖拽時,第一參數要隨之改變;填充柄向下拖拽時,第一參數不能發生改變,所以要對第一參數的行進行鎖定,以H2單元格為例,我們輸入match函數時應該輸入「MATCH(H$1,$A$1:$E$1,0)"。(對於單元格混合引用用法感興趣的朋友們在看完本文之後參考文章excel關於絕對引用和混合引用的巧妙使用)
綜上,該案例的正確解決方法如下:首先我們在H2單元格輸入「=VLOOKUP($G2,$A$1:$E$16,MATCH(H$1,$A$1:$E$1,0),0)」,然後我們按回車鍵,就能分別得到客戶ID為「BERGS」所對應的地址,接著我們選中H2單元格向有拖拽,就能得到客戶ID為「BERGS」所對應聯繫人姓名和公司名稱,接著我們同時選中H2單元格,I2單元格和J2單元格,然後通過填充柄拖拽的方式向下拖拽,我們就能到其他客戶ID所對應的公司名稱、聯繫人姓名和地址。具體操作可參考下圖:
今天的分享就到此結束了,覺得對你們有用的小夥伴們請點讚關注吧!您的鼓勵是我前進的動力,也希望擅長運用辦公軟體的小夥伴們能夠不吝賜教,積極的留言,教會小編更多的excel運用的小技巧,歡迎一起來探討學習!!
今天的分享就到此結束了,覺得對你們有用的小夥伴們請點讚關注吧!您的鼓勵是我前進的動力,也希望擅長運用辦公軟體的小夥伴們能夠不吝賜教,積極的留言,教會小編更多的excel運用的小技巧,歡迎一起來探討學習!!