Excel中如何用SQL進行多工作簿彙總?

lxvvx


對於經常使用Excel的人來說,在Excel中使用SQL能高效處理你的數據,但據我所知Excel中的SQL語法與MySQL數據的語法還有點不一樣。現在我就來實例說明如何用SQL語句對多個工作簿進行彙總。假如我們要彙總如下三個工作簿

1. 學生信息表

2. 學生成績表

3. 學生興趣表

將這三個工作簿按相同學號進行合併,大致分如下幾步:

1. 加載數據

在Excel中,依次點擊:數據->自其它來源->來自Microsoft Query->Excel Files*

然後再找到你Excel表格的存放目錄,如下圖

點擊下面你要加載的Excel數據表,進入下面頁面

將上圖可用的三張表都加入到右邊查詢結果中的列,加入完成後點擊下一步,數據就加載完成了。

2. 編寫SQL代碼並執行

接下來點擊上面的SQL按鈕開始寫SQL合併代碼。單純的合併代碼如下

SELECT

tm.*,

tn.興趣愛好 AS 興趣愛好

FROM(

SELECT

ta.學號 AS 學號,

ta.姓名 AS 姓名,

ta.年齡 AS 年齡,

ta.性別 AS 性別,

ta.身高 AS 身高,

ta.出生地 AS 出生地,

tb.語文成績 AS 語文成績,

tb.數學成績 AS 數學成績

FROM(

SELECT

tt.學號 AS 學號,

tt.姓名 AS 姓名,

tt.年齡 AS 年齡,

tt.性別 AS 性別,

tt.身高 AS 身高,

tt.出生地 AS 出生地

FROM [學生基本信息表$] tt

)ta

INNER JOIN(

SELECT

tt.學號 AS 學號,

tt.語文成績 AS 語文成績,

tt.數學成績 AS 數學成績

FROM [學生成績表$] tt

)tb

ON ta.學號=tb.學號

)tm

INNER JOIN(

SELECT

tt.學號 AS 學號,

tt.興趣愛好 AS 興趣愛好

FROM [學生興趣表$] tt

)tn

ON tm.學號=tn.學號

將代碼寫好後複製放入文本框中,點擊確定按鈕,就開始執行SQL語句。結果如下

這樣就完成了三個工作簿的數據合併,接下來將數據返回Excel表。

3. 返回數據到Excel表

點擊左上角的文件->將數據返回Microsoft Excel,彈出如下頁面

選擇數據的存放位置為新工作表,然後點擊確定即可,最終得到如下數據表

這樣就完成了三個工作簿的數據合併。


Tips:

1. 由於Excel中執行SQL語句時沒有比較詳細的報錯信息,如果SQL代碼語法有錯誤有可能執行會報錯,這個問題可以上網查詢或者直接在評論區問我。

2. 在Excel SQL中常用到的合併操作有INNER JOIN、LEFT JOIN、RIGHT JOIN、UNION、UNION ALL等,但不支持FULL JOIN。更復雜的需求都有一定的處理技巧。


薛定諤的小貓貓


Excel的多工作簿合併可以用SQL完成,但是,個人更加建議使用Excel2016的新功能Power Query(Excel2010或Excel2013可到微軟官方下載相應的插件)來完成。具體方法如下:

Step01:數據-從文件-從文件夾

Step02:瀏覽選擇數據所在的文件夾,然後單擊確定

Step03:添加列-添加自定義列-輸入公式:Excel.Workbook([Content])

Step04:單擊上一步用公式讀取的數據列名右側的數據展開按鈕

Step05:繼續展開數據

Step06:刪掉不需要的列(選擇要保留的列)

Step07:將第一行用作標題

Step08:刪掉其他表裡重複的標題行和彙總行

Step09:關閉並上載數據

最後數據結果彙總如下:

通過Power Query進行多個工作簿數據的彙總,方法非常簡單,而且,對於以上過程中的每一個操作,都會形成一個完整的步驟記錄,如下圖所示:

對於這些步驟可以非常方便地觀察其結果,並按需要進行修改——這種所見即所得的操作非常便於在數據彙總和處理過程中發現問題並及時糾正。

此外,相對於SQL,Power Query的操作更加簡單,而在Excel裡寫SQL其實是很麻煩的,如果只是簡單的而且非常規範的少數幾列數據彙總還好,如果數據較為複雜,用SQL簡直是個災難,但用Power Query可以按需要做非常多的中間處理(數據清洗)工作,然後再進行數據的彙總。

因此,自從有了Power Query,我就沒有再使用過Excel裡的SQL。


更多精彩內容,盡在【Excel到PowerBI】

我是大海,微軟認證Excel專家,企業簽約Power BI顧問

讓我們一起學習,共同進步!




Excel到PowerBI


第一步:點擊第一個表格,單擊右鍵,查看代碼

第二步:直接把編程複製進去,然後點擊運行,運行子過程/用戶窗體

第三步,運行完畢,回到表一,已經合併完成。篩選出標題

第四步,選定除去第一列的多餘標題,快捷鍵Ctrl+G&rarr——"定位條件"——選擇"可見單元格"——"確定"——單擊右鍵刪除

最後釋放出所有數據即可

數據合併之前

數據合併之後


深海魚愛生活


SQL多工作薄彙總數據,關鍵點是在SQL語句中工作薄和工作表的寫法,具體操作請看如下步驟

1、將待彙總的工作薄放入到同一文件夾下

各工作薄數據結構如圖

2、打開彙總工作薄,點擊數據選項卡--現有連接

3、點擊瀏覽更多找到存放待彙總工作表的文件夾,並點擊任意待彙總工作薄

4、單擊屬性,在彈出對話框中選擇定義選項卡,並在命令文本中輸入SQL代碼(工作薄路徑視具體存放位置而定)

最終完成的彙總效果如圖

若在第四“導入數據”對話框中選擇“數據透視表”則最後彙總會直接彈出透視表佈局界面,可以方便地對多工作薄數據進行同類彙總統計分析等。

以上即是用SQL做多工作薄彙總的大致操作方法,重點請注意命令文本中SQL代碼的語法細節。歡迎關注@Excel泥瓦匠,Excel學習,E路有你!


Excel小王子


select * from [工作簿路徑1].[工作表名1] union all

select * from [工作簿路徑2].[工作表名2] union all

select * from [工作簿路徑3].[工作表名3]


個人比較推薦vba 引用ADO的方法,可以用變量代替工作簿路徑不用一個個寫。

展開說太麻煩,就這樣吧。


分享到:


相關文章: