QUERY 函數能讓你在 Google 試算表中使用 Google Visualization API 查詢語言(類似 SQL),針對資料範圍進行篩選、排序與分組彙整,是處理大量報表資料的核心工具。
Google 試算表 QUERY 函數語法
=QUERY(資料範圍, 查詢字串, [標題列數])| 參數 | 必填 | 說明 |
|---|---|---|
| 資料範圍 | 是 | 要進行查詢的儲存格範圍,同一欄的資料類型必須一致。 |
| 查詢字串 | 是 | 以 Google Visualization API 查詢語言撰寫的字串,需用雙引號包覆,例如 "select A, B where C > 10"。 |
| 標題列數 | 選填 | 資料範圍中包含的標題列數量。若省略或設為 -1,系統會根據資料內容自動猜測。 |
回傳:根據查詢字串篩選、排序或彙整後的資料陣列。
QUERY 函數範例
範例 1:基本條件篩選
篩選出業績大於 10000 的業務姓名與業績。
| 業務姓名 | 產品 | 業績 |
|---|---|---|
| 王小明 | 筆電 | 50000 |
| 陳怡君 | 螢幕 | 8000 |
| 林家豪 | 筆電 | 45000 |
| 張雅婷 | 滑鼠 | 1200 |
在 E1 輸入公式:
=QUERY(A1:C5, "select A, C where C > 10000", 1)結果:業務姓名。公式會回傳符合條件的完整陣列。左上角第一格會顯示標題「業務姓名」,下方儲存格會自動溢出顯示王小明、林家豪及其對應的業績。
範例 2:群組與加總
依據商品分類加總庫存量。
| 分類 | 商品 | 庫存量 |
|---|---|---|
| 文具 | 原子筆 | 100 |
| 文具 | 筆記本 | 50 |
| 3C | 隨身碟 | 30 |
| 3C | 充電線 | 80 |
| 文具 | 橡皮擦 | 20 |
在 E1 輸入公式:
=QUERY(A1:C6, "select A, sum(C) group by A", 1)結果:分類。公式依據 A 欄(分類)進行群組,並加總 C 欄(庫存量)。左上角第一格顯示標題「分類」,右側與下方會溢出顯示 3C 與文具的總庫存量。
範例 3:日期條件篩選
篩選出 2026/10/02 之後的紀錄。
| 日期 | 員工 | 狀態 |
|---|---|---|
| 2026/10/01 | 王小明 | 出勤 |
| 2026/10/02 | 陳怡君 | 請假 |
| 2026/10/03 | 王小明 | 出勤 |
| 2026/10/05 | 林家豪 | 出勤 |
在 E1 輸入公式:
=QUERY(A1:C5, "select * where A > date '2026-10-02'", 1)結果:日期。在 QUERY 中篩選日期時,必須使用 date 關鍵字加上 'yyyy-mm-dd' 格式。左上角顯示標題「日期」,下方溢出顯示符合條件的完整列資料。
使用 QUERY 的技巧與注意事項
- 當資料來源是另一個函數(如 IMPORTRANGE 或陣列 {})時,查詢字串中的欄位代號必須改用 Col1、Col2,不能使用 A、B。
- QUERY 函數對同一欄的資料類型要求一致。若同一欄混合文字與數字,較少數的類型會被視為空值,建議先將資料格式統一。
- 查詢字串中的文字條件必須使用單引號包覆,例如 where B = '台北';日期則需使用 date 'yyyy-mm-dd' 格式。
QUERY 常見錯誤與解決方法
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
| #VALUE! | 查詢字串語法錯誤,例如欄位代號未大寫(A 寫成 a),或關鍵字拼字錯誤。 | 檢查查詢字串中的欄位代號是否為大寫字母,並確認 select、where、group by 等關鍵字拼寫正確。 |
| #N/A | 查詢字串執行成功,但沒有任何資料符合 where 條件,導致輸出為空。 | 檢查篩選條件是否過於嚴格,或資料範圍內確實沒有符合條件的紀錄。若不想顯示錯誤,可搭配 IFERROR 函數使用。 |
| #REF! | 公式需要展開資料,但下方的儲存格已經有其他資料擋住,導致無法溢出。 | 清除公式所在儲存格右方與下方的資料,確保有足夠的空白範圍讓 QUERY 函數展開結果陣列。 |
Excel 有 QUERY 嗎?
Excel 中沒有 QUERY 函數。若要在 Excel 達到類似效果,可以使用 Power Query 功能,或是結合 FILTER、SORT、UNIQUE 等動態陣列函數來處理資料。
常見問題
為什麼 QUERY 函數抓不到混合文字和數字的那一欄資料?
QUERY 函數預設同一欄只能有一種資料類型。如果一欄中同時有數字與文字,它會以佔多數的類型為主,將另一種型態的資料視為空值。解決方法是將整欄格式統一設為純文字。
可以在 QUERY 的查詢字串中參照其他儲存格的值嗎?
可以,需要使用字串串接符號 & 將儲存格變數組合進查詢字串中。例如 "select * where A = '" & E1 & "'",注意文字變數外層仍需有單引號包覆。
為什麼我的 QUERY 函數一直顯示 #REF! 錯誤?
這是因為 QUERY 準備展開的結果範圍內,已經有其他文字或資料佔據了儲存格。只要將阻擋展開的儲存格內容清空,公式就能正常顯示結果。
這篇收錄在「Google 試算表函數」。




