{eval=Array;=+count(Array);}
對于經(jīng)常使用Excel的人來說,在Excel中使用SQL能高效處理你的數(shù)據(jù),但據(jù)我所知Excel中的SQL語法與MySQL數(shù)據(jù)的語法還有點(diǎn)不一樣?,F(xiàn)在我就來實(shí)例說明如何用SQL語句對多個(gè)工作簿進(jìn)行匯總。假如我們要匯總?cè)缦氯齻€(gè)工作簿
1. 學(xué)生信息表
2. 學(xué)生成績表
3. 學(xué)生興趣表
將這三個(gè)工作簿按相同學(xué)號進(jìn)行合并,大致分如下幾步:
1. 加載數(shù)據(jù)
在Excel中,依次點(diǎn)擊:數(shù)據(jù)->自其它來源->來自Microsoft Query->Excel Files*
然后再找到你Excel表格的存放目錄,如下圖
點(diǎn)擊下面你要加載的Excel數(shù)據(jù)表,進(jìn)入下面頁面
將上圖可用的三張表都加入到右邊查詢結(jié)果中的列,加入完成后點(diǎn)擊下一步,數(shù)據(jù)就加載完成了。
2. 編寫SQL代碼并執(zhí)行
接下來點(diǎn)擊上面的SQL按鈕開始寫SQL合并代碼。單純的合并代碼如下
SELECT
tm.*,
tn.興趣愛好 AS 興趣愛好
FROM(
SELECT
ta.學(xué)號 AS 學(xué)號,
ta.姓名 AS 姓名,
ta.年齡 AS 年齡,
ta.性別 AS 性別,
ta.身高 AS 身高,
ta.出生地 AS 出生地,
tb.語文成績 AS 語文成績,
tb.數(shù)學(xué)成績 AS 數(shù)學(xué)成績
FROM(
SELECT
tt.學(xué)號 AS 學(xué)號,
tt.姓名 AS 姓名,
tt.年齡 AS 年齡,
tt.性別 AS 性別,
tt.身高 AS 身高,
tt.出生地 AS 出生地
FROM [學(xué)生基本信息表$] tt
)ta
INNER JOIN(
SELECT
tt.學(xué)號 AS 學(xué)號,
tt.語文成績 AS 語文成績,
tt.數(shù)學(xué)成績 AS 數(shù)學(xué)成績
FROM [學(xué)生成績表$] tt
)tb
ON ta.學(xué)號=tb.學(xué)號
)tm
INNER JOIN(
SELECT
tt.學(xué)號 AS 學(xué)號,
tt.興趣愛好 AS 興趣愛好
FROM [學(xué)生興趣表$] tt
)tn
ON tm.學(xué)號=tn.學(xué)號
將代碼寫好后復(fù)制放入文本框中,點(diǎn)擊確定按鈕,就開始執(zhí)行SQL語句。結(jié)果如下
這樣就完成了三個(gè)工作簿的數(shù)據(jù)合并,接下來將數(shù)據(jù)返回Excel表。
3. 返回?cái)?shù)據(jù)到Excel表
點(diǎn)擊左上角的文件->將數(shù)據(jù)返回Microsoft Excel,彈出如下頁面
選擇數(shù)據(jù)的存放位置為新工作表,然后點(diǎn)擊確定即可,最終得到如下數(shù)據(jù)表
這樣就完成了三個(gè)工作簿的數(shù)據(jù)合并。
Tips:
1. 由于Excel中執(zhí)行SQL語句時(shí)沒有比較詳細(xì)的報(bào)錯(cuò)信息,如果SQL代碼語法有錯(cuò)誤有可能執(zhí)行會(huì)報(bào)錯(cuò),這個(gè)問題可以上網(wǎng)查詢或者直接在評論區(qū)問我。
2. 在Excel SQL中常用到的合并操作有INNER JOIN、LEFT JOIN、RIGHT JOIN、UNION、UNION ALL等,但不支持FULL JOIN。更復(fù)雜的需求都有一定的處理技巧。
select * from [工作簿路徑1].[工作表名1] union all
select * from [工作簿路徑2].[工作表名2] union all
select * from [工作簿路徑3].[工作表名3]
個(gè)人比較推薦vba 引用ADO的方法,可以用變量代替工作簿路徑不用一個(gè)個(gè)寫。
展開說太麻煩,就這樣吧。
0
回答0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答0
回答