方格精選

QUERY 函式大解析(一):基本原理與 SELECT

更新於 發佈於 閱讀時間約 10 分鐘

隆重介紹:QUERY 函式!

QUERY 是一個可以對大量資料查詢特定資訊,依據特定篩選條件快速回傳儲存格、欄、範圍的函式。

真的很好用!

這個函式用的語言為所謂的 Google Visualization API Query Language(Google 視覺化 API 搜尋語言),是 Google 開發的一個類似 SQL 搜尋的語言。如果你不曾聽過 SQL 也沒關係,在 Google 試算表上的應用算比較直覺了,不需要很複雜的巢狀語法、也不需要新學很多很多語法。

如果你平常已經在用 SQL 來搜尋、整理資料的話,恭喜你,你的 QUERY 已經學了一大半了;如果你剛從 Excel 轉到 Google 試算表的話,我也非常推薦你從頭開始學這個強力的函式。

我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:

QUERY 函式大解析,系列文索引


優點

效率快

比起其他讀取資料的方法(如 IMPORTRANGE、直接用「=」參照等),QUERY 的執行時間大多可以在一眨眼間完成,就算有很大的資料,也可以輕易搜尋,效率很好。

維護容易

因為語法直覺,很快就能進行維護,如果需要更改語法也可以很直覺地編輯。

適合資料庫快速搜尋資訊、小型資料庫管理

在工作的時候 QUERY 可以幫助我快速統整資料!特別當資料會在試算表隨時變動的時候,QUERY 也會即時更新資訊,就像一個小型的資料庫一樣。如果只需要快速搜尋到一定的資訊、甚至掛上特定條件,也可以很快運算出來。

缺點

QUERY 輸出結果不能編輯

QUERY 和 FILTER、IMPORTRANGE 這類的函式一樣沒辦法直接對輸出結果編輯,而且如果結果覆蓋到輸出結果的話,會產生錯誤。

如果需要編輯的話,最理想還是可以透過原地貼上來解決、但如果資料筆數很大的話,可能就得再花其他手段來達成編輯的目標(例如下載成 .csv 後再匯入、輸出結果分段原地貼上、利用 QUERY 的 LIMIT 參數分段輸出後、再原地貼上等等)。

資料筆數(算)是有限制的

當搜尋的資料筆數太多,QUERY 就會稍稍變慢、效率就會和資料筆數成反比了,甚至連 Google 試算表本身也都會卡住。這時候可能還是用其他的資料庫軟體比較實在。

QUERY 輸出結果沒有格式

如果你在原本的資料範圍內有設定一些顏色、粗體、斜體、底線、字型等等的格式,QUERY 不會一起把這些設定輸出過來。格式這些東西如果真的有需要,可以用條件化格式稍稍美觀一下,或是等到資料都處理完畢後再來處理。


語法

非常地簡單:

=QUERY(資料, 查詢, [標題])

資料:查詢作業針對的儲存格範圍。

  • 這邊資料範圍有這三種資料格式:布林、數值(包含日期、時間)還有文字。
  • 如果資料範圍內的任一欄內有混合的資料格式,QUERY 會以主要的資料類型進行判斷,次要的資料類型會被視為空值。如果這樣的資料被視為空值的話,資料有可能會失準。
    在進行 QUERY 前最好確保每個欄位的資料格式都是一致、該有的樣子。例如說我有個欄位應該要存放「金額」,資料格式應該是要是數值才對,如果包含其他格式(如布林值、時間)的話就不會被正確讀取到。

查詢:想要查詢的 Google 視覺化 API 語法。

視覺…A…什麼?沒關係,我們會慢慢說明。這邊就是要告訴 QUERY 你要輸出什麼結果、有什麼限制條件等等的參數。這邊的語法是按照這個視覺化 API 語法的文件規範的,整面英文看起來是有點可怕,但今後會一個一個說明!

我們會打出這類的東西:

=QUERY(資料, "SELECT *")
=QUERY(資料, "SELECT * WHERE B = 'Mr. Sheet'")
=QUERY(資料, "SELECT * WHERE B > 10 AND C > 10")
=QUERY(資料, "SELECT A, B, C WHERE G = '台灣'")

這邊也要注意,我們的查詢語法必須要有前後兩個雙引號包好,不然會出錯。

[標題]:資料是否包含標題行。

這個是選填的參數,通常我們只會放 -1、0、1 這三種數字。說明如下:

  • 如果忽略這個引數或設成 -1,QUERY 會根據資料內容自己猜測資料是否包含標題行。
  • 如果是 0,那就是告訴 QUERY 這筆資料沒有標題行。
  • 如果是 1,那就是告訴 QUERY 這筆資料有 1 行標題。


SELECT

你或許有察覺到,在我們剛剛示範的語法內,反覆有「SELECT」這個字眼。這是代表「選取」的意思。SELECT 在 Google 試算表上的意義就是「選取想要的欄位」,告訴 QUERY 函式你想得到什麼結果。如果省略 SELECT 的話,就會回傳全部的欄位,但大多時候還是會很建議把 SELECT 寫上去。

SELECT *

選取全部欄位。

SELECT A

選取資料範圍的 A 欄。

你當然可以用別的字母代替,例如 SELECT A、SELECT B、SELECT C 等。在指定的時候確保你指定的欄位在前面定義的範圍裡。比如說,如果你想要選取 E 欄而打了 SELECT E,但你之前的範圍卻只定義到 D 欄,就會產生錯誤:

=QUERY(Sheet!A:D,"SELECT E") --> 產生錯誤!#ERROR



SELECT A, B, C …

你當然也可以選取兩個以上的欄,並且用逗號分隔。

像是 SELECT A, B, C,就會回傳 A 欄、B 欄、C 欄。要回傳多少欄位是沒有限制的,但也一樣要確保你的欄有在起初定義的範圍內。這邊的 A、B、C 也不一定得按照字母順序排列,你如果希望輸出結果是按 B、C、A 這個順序出現,那就寫 SELECT B, C, A。

SELECT 也可以和其他的彙總參數一起併用,得到範圍的平均、最大值、最小值、總和等等的數字,這個也會在之後另外講解。

練習

接下來,你可以試試看用這個試算表來練習 QUERY。

試著打開一個空白的工作表,做以下的 QUERY:

  1. 利用 SELECT 選取全部的欄位。
  2. 利用 SELECT 選取「學校名稱」。
  3. 利用 SELECT 選取「學校名稱」、「公/私立」、「電話」。
=QUERY('小學列表'!A:G, "SELECT *")
=QUERY('小學列表'!A:G, "SELECT B")
=QUERY('小學列表'!A:G, "SELECT B, C, F")

如何,還 OK 嗎?如果不確定怎麼做的話,也可以看看下面的教學喔!


利用 SELECT 選取全部的欄位

選一個你想要開始顯示結果的儲存格,輸入:

=QUERY(

像是這個樣子:

raw-image

再來就是定義資料範圍了。在函式還在編輯的狀態下,你可以直接點下面的「小學列表」工作表,再用滑鼠把全部資料選起來。我是以欄為單位選的,所以出現 '小學列表'!A:G:

raw-image

如果你直接按工作表左上角範圍選取,應該會出現 '小學列表'!1:2635。這也沒關係,QUERY 也讀得到你的資料。

但如果今後你的資料會往下生長(例如又多了新的小學的資料),我比較建議用「欄」的角度去選取,這樣不論資料怎麼更新、或是語法維護上都不必太操心。

如果你想要直接用打的來指定範圍,其實目前為止就是:

=QUERY('小學列表'!A:G

單引號表示工作表名稱,驚嘆號表示參照其他的工作表。

再來,我們就要來用 SELECT 來選取全部的欄位(SELECT 要大寫或是小寫都沒關係)。先打上一個逗點,之後用 SELECT * 來選取全部欄位。別忘了前後要加上雙引號,確定沒問題後就再加上右括號收尾:

=QUERY('小學列表'!A:G, "SELECT *")
raw-image

痛快按下 Enter,就會看到你的 QUERY 成果:

raw-image


利用 SELECT 選取「學校名稱」

接下來,就和上面的方式一樣定義範圍,但要 SELECT 的欄位就不是全部(*)了,而是「小學列表」的 B 欄。語法就會是:

=QUERY('小學列表'!A:G, "SELECT B")

結果就會像這個樣子:

raw-image

利用 SELECT 選取「學校名稱」、「公/私立」、「電話」

其實也就是同樣的道理了,我們要來取「小學列表」的 B、C、F 欄位。語法就是:

=QUERY('小學列表'!A:G, "SELECT B, C, F")

就會得到下列結果:

raw-image

以上就是 QUERY 函式的第一部分,原理和 SELECT 的用法!

我們之後還會再推出幾篇,來詳細講解 QUERY 的應用方式。QUERY 真的是我工作的好夥伴,真心推薦大家。

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!

想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
楊志淵-avatar-img
2024/01/03
Hi 喜特先生:看了你的教學,受益良多,謝謝你分享這麼多有實用性的資訊!有遇到一些跨年度且較複雜的問題,有將問題以你分享的試算表做呈現https://docs.google.com/spreadsheets/d/1MLrgzOwZDPb7283hQRRJTxXv0JOaKP1Dlnk2_QbK3_M/edit?usp=sharing這也可以用Query來解決嗎?
喜特先生 Mr. Sheet -avatar-img
發文者
2024/01/04
楊志淵 哈囉!謝謝你來看我的教學(也收到你填入的問題表單了)。我稍稍看了一下資料,感覺的確是可以,但或許稍稍改一下資料的結構會更容易做。我會在試算表那邊提供我的答案,然後再通知你唷!
喜特先生 Mr. Sheet -avatar-img
發文者
2024/01/30
QUERY 函式大解析,系列文索引提及了這篇文章,趕快過去看看吧!
喜特先生 Mr. Sheet -avatar-img
發文者
2023/07/11
QUERY 函式大解析(二):WHERE提及了這篇文章,趕快過去看看吧!
Chloe-avatar-img
2023/02/01
今天試用了Query,但沒有像您提到的這麼複雜,只是從同個檔案的別的Sheet把資料叫過來(類似這樣https://sheetsformarketers.com/google-sheets-query-multiple-sheets/) 但是遇到一個問題是,原始檔案的儲存格裡面的那個欄位的確是有資料的,但是Query過來之後對應那個儲存格裡面的資料卻是空白的。想請問這個可以怎麼樣除錯呢? 謝謝!
喜特先生 Mr. Sheet -avatar-img
發文者
2023/02/01
哈囉,Chloe! 謝謝你來看我的教學! 我看了一下你傳給我的網站,看起來是用陣列合併的方式把多個範圍統整在一起。或許你可以看看這篇之前分享過的文章「{ 看過這組花括號嗎?}」,希望可以帶給你一些靈感! https://vocus.cc/article/634021e2fd89780001982319 但如果沒有幫助的話,當然可以把試算表的連結分享給我,我來幫忙你!可以把你的問題跟連結傳到這個表單唷: https://forms.gle/PGqfebKF8GTuZE6z7 期待你的回覆!
avatar-img
喜特先生官方沙龍
19.1K會員
153內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
探索 Google Sheets API 在 Google Apps Script 上的實用操作和技巧。本文詳細解釋了試算表和工作表的操作、好用函式和原始碼分享,是想要深入了解 Google Sheets API 應用的理想指南。
Thumbnail
探索 Google Sheets API 在 Google Apps Script 上的實用操作和技巧。本文詳細解釋了試算表和工作表的操作、好用函式和原始碼分享,是想要深入了解 Google Sheets API 應用的理想指南。
Thumbnail
除了常見的下拉式選單,我們還有其他的驗證機制可以使用。今天就來看看怎麼設定數值、文字、日期的資料驗證吧!
Thumbnail
除了常見的下拉式選單,我們還有其他的驗證機制可以使用。今天就來看看怎麼設定數值、文字、日期的資料驗證吧!
Thumbnail
這篇文章將會介紹企劃使用的文件格式與其特性。
Thumbnail
這篇文章將會介紹企劃使用的文件格式與其特性。
Thumbnail
「已命名函式」功能可以讓你設計自己的函式,還可以把它分享給別人使用、更可以把它匯入到其他試算表,化繁為簡,讓你的工作效率大大提升。這是 Google 試算表的一大突破,一起來看看怎麼做吧!
Thumbnail
「已命名函式」功能可以讓你設計自己的函式,還可以把它分享給別人使用、更可以把它匯入到其他試算表,化繁為簡,讓你的工作效率大大提升。這是 Google 試算表的一大突破,一起來看看怎麼做吧!
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
用 Google 試算表內建的翻譯函式功能來批次翻譯外語單詞或句子。一行函式,值得一試!
Thumbnail
用 Google 試算表內建的翻譯函式功能來批次翻譯外語單詞或句子。一行函式,值得一試!
Thumbnail
QUERY,一個真的要隆重介紹的函式,真的很好用。一起從頭開始學這個強力的函式吧!
Thumbnail
QUERY,一個真的要隆重介紹的函式,真的很好用。一起從頭開始學這個強力的函式吧!
Thumbnail
JavaScript 能做許多事,尤其透過瀏覽器的 API 或套件,我們得以悠游於巨量資料中,將資料轉換為與使用者溝通的介面,以下就來分享 15 個實用的 Vanilla JS 程式碼...
Thumbnail
JavaScript 能做許多事,尤其透過瀏覽器的 API 或套件,我們得以悠游於巨量資料中,將資料轉換為與使用者溝通的介面,以下就來分享 15 個實用的 Vanilla JS 程式碼...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News