Excel 中 VLOOKUP() 函數小結


應用場景:

數據倉庫上游源系統的數據庫表變更,現在需要拆分一部分數據出來,單獨放到一張新表中。假設原表為A,新表為B,B表和A表結構大部分一樣,只有字段的前綴不同,那么我們如何找出到底有哪些字段不同呢?顯然,如果A表只有10個字段,B表少了2個字段,那么我們很容易找出來,用眼睛看就行了。如果A表有200個字段,B表有195個字段,那怎么辦呢?

思路:現在,現在用眼睛看是不行的。我們可以這樣做,通過主鍵字段來進行查找(主鍵先進行預處理,截取前綴后面的部分),使用VLOOKUP來找出每個字段的不同。那么,VLOOKUP如何使用呢?這就觸及到我的知識盲區了。作為一個幾乎近10年不用Excel的程序猿,作為一個8年的JAVA程序猿,算了不吐槽了.....    翻一翻我自己的技術棧,勞資現在竟然在搞數據倉庫,你能信?

基礎一:利用VLOOKUP函數返回班級名稱

現在我舉個栗子:利用VLOOKUP函數返回班級名稱。

假設紅色方框中部分(I1~I12)原先無值,我們如何批量的從左側部分(A1~D12)通過學號來補全這部分呢?

可以這樣做:先用VLOOKUP求出I1的值,然后往下拖動復制,這樣就能補全全部的值了。那么,如何先補全I1的值呢?

1. 選中I1,輸入=VLOOKUP,Excel會自動提示,如圖所示:

2. VLOOKUP參數:lookup_value 表示用哪部分查找、table_array表示查找的區域(我們可以理解為一個二維數組)、

                                col_index_num要查找的信息在二維數組水平偏移量(就是在這個數組中那一列),最后一列可以自己看提示(近似還是精確)

3.該例子中,最后的輸入是:

猛一看,好像是對的,但是你向下拖動復制的時候,看看結果:

看一看,是不是有很多沒有找到?原因在哪?我們看看I5的函數表達式,A5:D16?什么鬼?是不是Excel太自作聰明了.... 看來我們要給它限定死區域才行。看看這樣寫:

這次我們用了絕對地址,用$符給限定死,F5是可以根據選中行的不同自動累加,但是$A$1:$D$12就不會再變了,我們會一直在這個區域查找。所以,現在用VLOOKUP找到I1后,我們直接往下拖動復制就可以了。

基礎二:利用vlookup返回多列數據

如果我們現在只有學號,我要補全姓名、性別、班級呢?

聰明的你可能會覺得這很簡單,我重復寫3次vlookup不就行了嗎?恩,你很聰明,那么如果我有100個屬性都要補全你,所以你准備寫100次?有沒有覺得自己智障?

如何才能不做智障?順便地,我們把題目再復雜化一下:

我們看看規律VLOOKUP($F14,$B$1:$E$12,COLUMN(C1)-1,FALSE)。

column()函數返回列數,但是函數要的不是這個,要的是在二維數組中水平偏移量,所以減1才是偏移量(第二列);

剩下的應該不用說了吧,自己體會~~~

展望:

下一次介紹Excel中的字符串截取。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM