免費軟體與線上工具1,417影音、圖片與 PDF9153C 開箱評測895生活、旅遊與遊戲798iPhone 與 Mac547LINE 與社群533Google 服務466Windows 與電腦452Android 手機402Office 教學387網路新知372AI 工具119
Google 服務

Google 試算表 QUERY 函數:用類似 SQL 語法篩選資料

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 試算表函數」。