【Excel使用技巧】vlookup函數
- 2020 年 3 月 28 日
- 筆記
背景
前不久開發了一個運營小工具,運營人員上傳一個id的列表,即可導出對應id的額外數據。需求本身不複雜,很快就開發完了,但上線後,運營回饋了一個問題,導出後的數據跟導出之前的數據順序不一致。
經過溝通後發現,原來運營的id數據是從另一個 Excel
複製出來的一列,用工具導出完之後,需要再把新增的一列數據複製回去。就像下面這樣:
emmmm,跟從產品經理了解到的需求好像還是有點點不一樣,那怎麼解決這個問題呢?
方案一、排序
拍了拍我聰明的大腦殼,一個騷操作就誕生了,把兩邊都按id排序一下,順序不就一樣了?就像這樣:
機智如我,這種方法比較簡單粗暴,也確實能解決問題,但有兩個明顯的缺點:
- 如果兩邊id的數量並不一致,那這個方案是行不通的
- 排序後,原文件無法恢復到原序列
雖然簡單粗暴能解決問題,但是還不夠好。
方案二、修改框架
目前類似的小工具都統一使用組內開發的一個批量處理工具,接入比較簡單方便,框架的大致原理是解析文件後,分發給多個 gorutine
進行並發處理,最後通過 reduce
操作聚合結果,所以最終結果只會是局部有序。
要想解決這個問題,需要對框架進行一些修改,最簡單的處理方式,可以在解析文件後,先創建一個有序 map
作為 reduce
的結果表,每個子任務完成後,把結果寫回最初的 map
里,最後按順序輸出即可。
但這個方案比較耗時,而且存在一定風險,畢竟在Go
語言里,是沒有有序 map
這樣的數據結構的,實現起來並不簡單(當然也可以用兩個 map
來解決,一個存id和數據的映射,另一個存id與原序號的映射),最重要的一點是,很多任務都使用了這個框架,還需要考慮是否會影響之前的任務。
當我把想法跟同事交流後,同事嘿嘿一笑,搞這麼複雜幹嘛,讓他們用vloop
就行了。
vlookup
???經過一番搜索後,終於搞明白了,原來還有這麼好用的東西,於是便有了方案三,也就是本篇的主角。
方案三、vlookup 函數
vlookup
函數是 excel
中的一個函數,可以用於縱向查找,函數語法如下:
這個函數一共有四個參數,第一個是要查找的值,第二個參數是查找區域,第三個參數是需要返回的值所在的列的序號,第四個參數代表是精確匹配還是模糊匹配。
好了,函數講解完成,很簡單吧。
下面我們來練習一下:
我們需要在G列取出兩位同學的成績,來套一下公式,第一個參數是要查找的值,這裡選「花榮」,也就是 $F2,第二個參數是匹配對象範圍,這裡框選出BC兩列。
劃重點!!!這裡選出的區域,第一列必須包含要查證的值,比如這裡的花榮和關勝,都在B列中。
第三個參數代表需要取第幾列的值,注意,這裡是指選中區域的第幾列,我們選中的是BC兩列,需要取的是C列,所以應該是第2列(序號從1開始)。
第四個參數代表是否需要模糊匹配,FALSE代表否,TRUE代表是,這裡我們選擇 FALSE。
所以公式就變成了:
=VLOOKUP(F2,B:C,2,FALSE)
下面是操作動態圖:
其實也很簡單嘛。
下面我們再來做一題,試試模糊匹配。
現在我們需要給這五位同學評分,評價標準是:059是不及格,6070是及格,7080是良,8099是優秀,100是滿分。
這個時候,模糊匹配就派上了用場。
第一個參數,待查找的值,這裡是成績,所以選擇C2。
第二個參數,匹配對象範圍,這裡選FG兩列。
第三個參數,需要取出的值,這裡選第二列。
第四個參數,是否模糊匹配,這裡選TRUE。
所以公式就是:
=VLOOKUP(C2,F:G,2,TRUE)
下面是操作的動態圖:
手有點冷,操作有點捉急,哈哈哈哈。
其實這個函數也挺簡單的嘛,建議多練習一下,以備不時之需。即使不想學也沒關係,至少得知道 Excel 可以實現這樣的功能,下次需要的時候再查也無妨。
還是那句話,知識就像手裡的牌,知道的越多,便越能靈活應對。
總結
其實寫這篇文章,總結一下 vlookup 的用法只是一方面,另一方面也是對自己的反思,自從學了編程之後,曾一度對 Excel 等工具不屑一顧,總覺得能用程式碼完成的功能,就不應該藉助它們的力量。
如果是在學習探索階段,通過自己的努力來實現各種功能自然是不錯的,但也不應該忘記,我們所掌握的各種程式語言也不過是工具而已,最重要的是解決問題,用什麼工具解決又有什麼區別呢?
見過很多人會拚命吹噓XX語言是最好的語言,我覺得這樣的討論很無聊,還不如吹一吹清風是世界上最帥的男人。
什麼???清風是誰你都不知道?掃描下面二維碼即可揭曉真相。