之前寫了一篇部落格程式設計師如何巧用Excel提高工作效率,講解了程式設計師在日常工作中如何利用Excel來提高工作效率,沒想到收到很好的反饋,點贊量,評論量以及閱讀量一度飆升為我的部落格中Top 1,看來大家平時幫業務修改資料的場景很多啊,哈哈。
好了,言歸正傳,本篇部落格我們主要講解下Excel中VLOOKUP函式的使用,相比於上一篇中的內容,個人覺得這個相對高階一些。
1.使用背景
為什麼會使用到這個函式呢,背景是這樣的,有兩個系統,我們假設叫A系統,B系統,這兩個系統都儲存了供應商的資訊並且和平相處很長時間,忽然有一天上班,就看到業務同學發的釘釘訊息:
業務:在不,我發現你們A系統儲存的供應商名稱不對啊
我:舉個例子
業務:有個供應商A系統叫[聯營]蘇州食行生鮮電子商務有限公司,但是B系統叫蘇州食行生鮮電子商務有限公司,類似的還有很多,基本上A系統都加上了**[聯營]這個字首或者[聯營]**這個字尾
我:那你的需求是?
業務:我需要A系統裡的供應商名稱全部修改為和B系統一致,以B系統為準,並且現在A系統我需要供應商的聯絡人資訊,這個資料B系統是有的,你也幫我一併初始化過來
我:好吧,你說了算……
2.使用方法
按照上述的使用背景,業務提供瞭如下的Excel,這個Excel分3個Sheet,分別是:A系統供應商資料,B系統供應商資料,B系統供應商聯絡人資料,具體的資料如下所示:
我們的最終目的是拼接一個Update語句來更新A系統的供應商資料,然後批量生成,這樣就可以批量更新A系統的供應商資料了。
基於此目的,我們拆分步驟如下:
- 把第2個Sheet和第3個Sheet中的資料匹配到第一個Sheet中,匹配條件是列:B系統供應商編碼
- 在第一個Sheet中拼接Update語句(拼接方法可參考之前的部落格程式設計師如何巧用Excel提高工作效率)
- 批量生成Update語句
第一步我們就需要用到VLOOKUP函式了,以下為匹配方法:
此時我們已經將需要的資料都匹配到了第一個Sheet中:
接下來我們需要的是拼接Update語句,方法如下:
最終批量生成的語句如下,完美完成:
UPDATE supplier_seller
SET supplier_seller_name = '蘇州食行生鮮電子商務有限公司',
contact_name='張洪良',
contact_email='zhanghongliang@163.com',
contact_mobile='13758494357'
WHERE disabled = 0
AND supplier_seller_code = 'A000001';
UPDATE supplier_seller
SET supplier_seller_name = '北京每日優鮮電子商務有限公司',
contact_name='曾斌',
contact_email='zengbin@163.com',
contact_mobile='15601637452'
WHERE disabled = 0
AND supplier_seller_code = 'A000002';
複製程式碼
3.常見問題
在這個過程中,可能會出現以下情況,明明資料存在,匹配完成卻顯示**#N/A**(注意:資料不存在也會顯示#N/A):
出現的原因可能有以下兩種:
1.匹配的兩列的單元格格式不同,比如第一個Sheet中的單元格格式是常規,第二個Sheet裡的單元格格式是文字,解決方案就是將兩列的單元格格式修改為一樣:
2.匹配列不在第一列,如我們調整下第2個Sheet中兩列的位置
因此建議將匹配列放在第一列,避免出現問題排查浪費時間。