如何對 Excel 中的資料使用 SQL 查詢

Excel 提供了 Filter、透視表、Subtotal 等內建查詢功能,但這些介面操作有時反而比較繁瑣,也不夠靈活。對於某些有 SQL 經驗的人來講,如果能直接用 SQL 查詢資料就方便多了。

比如下面這張銷售訂單表:

目標:求2009 年每個銷售員(C 列)的訂單數,結果貼在 G 到 H 列。如下圖:

如果用SQL 就是一句:select sellerid,count(1) orderNum from table_name where year(OrderDate)=2009 group by sellerid,非常簡單。

下面我們來看如何在Excel 裡使用 SQL 查詢計算資料。

1. 下載集算器職場版並安裝,到官網上找就行了

注意要同時下載授權,免費版足夠了。安裝後執行,會提示載入授權。

2. 用Excel 開啟需要計算的檔案,比如上例。

3. 選中A2:E12 區域,按 ctrl C 複製到剪貼簿。

4. 切換到集算器,選中A1 格,注意要讓游標落到 A1 的編輯狀態中,用 ctrl V,將資料貼上進 A1 格。

5. 在集算器的A2 格中填入 SQL 語句:$select sellerid,count(1) orderNum from {A1.import@t()} where year(OrderDate)=2009 group by sellerid,注意前面要有一個 $ 符號,這是集算器的約定,from 的內容要寫成 {A1.import@t()},表示將 A1 裡的字串轉為表格資料以便執行 SQL,@t 表示首行為列名。

6. 按F9 執行,然後點選 A2,右側可以看到執行結果。

7. 按住shift(以便帶上列名),在右側點選 "copy data" 按鈕,將 A2 的計算結果複製到剪貼簿。

8. 在Excel 的 G2 單元格,用 ctrl V 貼上結果。

OK,大功告成。

再舉一個關聯計算的例子。比如某Excel 有orders和employee這兩個sheet,現在要將兩個sheet關聯在一起。

前兩步見上例。

3. 選中orders sheet 中的列名和資料,Ctrl C 複製到剪貼簿,Ctrl V 貼上到 esProc 的 A1 單元格。

4. 類似地,將employee sheet 複製貼上到 esProc 的 B1 單元格。

5. 在A2 格執行 SQL:$select o.OrderID, o.OrderDate,o.Amount, e.Name, e.Dept
   from {A1.import@t()} o left join {B1.import@t()} e on o.sellerID=e.empID

後續步驟見上例。

集算器能支援 SQL92 標準的大部分語法和函式,包括巢狀的子查詢,甚至 WITH 都可以。