剛看了前面幾個答案,除了說用vlookup的方法基本答對之外,人氣最高的答案貌似不是提問者所需要的,因為這個答案是指多個工作表的匯總,而不是提問者所需要的橫向的合并。
如前面的答案,vlookup是方法之一,但是,用vlookup有一個問題,就是只能從一個表讀取數據到另一個表,而不能實現兩個表的完全整合,比如如果A表上有姓名和地址而B表上沒有數據的,從B表讀取A表的數據就讀不出來,相反也是一樣。
因此,個人認為最好的辦法是用Excel2016的新功能Power Query(如果是Excel2010或2013可以到微軟官方下載插件)。具體實現方法如下:
vlookup雖好,然難承大數據之重【PQ關聯表合并】原創 大海 Excel到PowerBI小勤:大海,現在公司的數據量越來越大,現在有訂單表和訂單明細表,經常要將訂單表的一些信息讀取到訂單明細表里,給相關的部門去用,原來只要幾列數還好,vlookup讀一下就是了,但現在,經常要很多數,用vlookup要累屎了。這個訂單表還算少的,還很多其他的一張表里都好幾十列了。
大海:呵呵,大數據時代嘛。幾十列算少的啦,我上次一個項目上的合同表,有差不多300列,而且這還不算真正多的。
小勤:那怎么辦啊!有時候按列順序讀還好,很多時候還不是按順序的,簡直就沒法整啊。而且,滿篇公式的時候,工作表都要跑不起來了。
大海:這個時候用vlookup的確有點吃力了,雖然vlookup是Excel中極其重要的函數,但是,在大數據時代,已經很難承起數據關聯合并的重擔了,所以微軟才在Excel里加了PowerQuery的功能嘛,點點點,你想要哪些列就哪些列。
小勤:這么神奇?
大海:這段時間PowerQuery的神奇你也不少見了,不用驚訝。現在就告訴你怎么弄。
Step-1:獲取訂單表數據并僅創建表連接上載
Step-2:獲取訂單明細表數據并僅創建表連接上載(需要直接上傳結果的可以選擇表)
Step-3:回到PowerQuery界面(當然,前面一個步驟如果沒有關閉并上載的話,不需要這一步)
Step-4:選擇要接入外部數據的查詢,單擊【開始】-【合并查詢】
Step-5:選擇要接入的外部表、選擇兩表之間用于匹配的列(可以是多列匹配,文末以另一個例子該步驟的附圖方式說明)
Step-6:展開要接入表的列信息,選擇要接入的列以及列名顯示方式(是否加前綴)
Step-7:查看接入的結果,上載數據
Step-8:改變數據的加載方式(由“僅創建連接”方式改為“表”,若前面訂單明細不是以“僅創建連接”的方式創建,該步驟不需要)
小勤:這樣真是太方便了,只要選一下匹配要用的列,選擇一下要接入哪些列就搞定了!對了,剛才你不是說可以多列匹配嗎?原來用vlookup的時候可麻煩了,還得增加輔助列先將那些列連接起來,然后再用輔助列來匹配。
大海:是的。在PowerQuery里也不需要了,只要在選擇匹配列時按住ctrl鍵就可以選擇多列了。只是要注意兩個表選擇匹配列的順序要一致。如下圖所示:
小勤:太好了,以后數據列多的時候匹配取數就太簡單了。
以上是使用Power Query代替vlookup實現的兩表合并的基本用法(雖然步驟看起來很多,實際關鍵步驟就2個,都是鼠標點點點就瞬間完成的事情)。
那么,前面提到的,如果兩個表間存在的差異數據都要顯示,怎么辦呢?只要對其中的表間連接類型按以下情況進行適當的選擇即可:
左外部:只要訂單表(左表)里有的數據,結果表里都會有,但有些因為明細表(右表)里沒有,所以匹配過來后會成為null(空值)
右外部:和左外部相反,即明細表(右表)里有的數據,結果表里都會有,但因為訂單表(左表)里有部分數據沒有,所以合并后用null值表示。
完全外部:不管哪個表里的數據,全都進結果表,對于雙方都有一些對方沒有的,合并后顯示為null值。
內部:跟完全外部相反,只有兩個表都有的數據,才進結果表。
左反:只有訂單表(左表)有而明細表(右表)沒有的數據,才進結果表。這種用法經常用于檢查如哪些訂單缺了明細表等。
右反:和左反相反,只有明細表(右表)有而訂單表(左表)沒有的數據,才進結果表。
歡迎關注【Excel到PowerBI】我是大海,微軟認證Excel專家,企業簽約Power BI顧問讓我們一起學習,共同進步!