跳到主要內容區塊

計資中心電子報C&INC E-paper

技術論壇

Google Sheets – Query函式
  • 卷期:v0075
  • 出版日期:2025-12-20

作者:張如媚 / 臺灣大學計算機及資訊網路中心程式設計組行政組員


有時候,想要處理些簡單的資料查詢,但手邊沒有資料庫,或不想動用資料庫嗎?亦或是試算表的初階使用者,想做簡單的資料擷取,但對試算表中複雜的函式不熟悉嗎?來試試Google試算表提供的Query函式吧,支援類似資料庫中的SELECT語法,雖然沒有SQL Command這麼強大,但淺顯易懂,適合稍微了解資料庫語法,卻又不熟悉試算表繁雜功能的人使用。

 

Query實作範例

首先,必須有Google帳號,若沒有的話,需要申請。請於登入Google帳號後,進入Google試算表,或直接輸入網址https://docs.google.com/spreadsheets亦可。

20251220_007507_01

圖1:進入「Google試算表」

 

接著準備此次操作範例,先於畫面列表中,點選右下角的「+」號圖示,建立新試算表,本次範例資料來源,可至「教育部統計處>學校名錄及相關資訊>學校名錄>113學年各級學校名錄及異動一覽表」中,下載「國民小學」XLS檔(https://stats.moe.gov.tw/files/school/113/e1_new.xlsx),並將內容複製貼上至Google試算表中的「工作表1」。

20251220_007507_02

圖2:測試資料範例

 

準備好前置工作後,接著於上方功能列中,選擇「插入>工作表」,新增一個工作表,我們要將這次試作的內容,都顯示在「工作表2」中。

 

QUERY公式基本參數是「QUERY(資料範圍,查詢,[標題])」,此處測試資料範圍,是工作表1的欄位A3至G,所以第一個參數可以輸入「'工作表1'!A3:G」;第二個參數是「查詢」,這是最重要的部份,我們稍後再來說明;第三個參數是「標題」,用來指定資料範圍中的標題行數,可以不輸入,預設會直接根據資料內容顯示標題。試作時,請選擇「工作表2」中的任一欄位,輸入公式即可。

 

QUERY第二個參數「查詢」中,以字串組成,主要包含select、where、group by、pivot、order by、limit、offset、label、format等。

 

Select為選擇欄位,輸入「=QUERY('工作表1'!A3:G, "select * ")」,可以取出工作表1,A3~G欄所有資料,「=QUERY('工作表1'!A3:G, "select A,B,C ")」,可以指定顯示A、B、C欄位。

20251220_007507_03

圖3:select範例

 

Where為查詢條件,搭配select,顯示符合條件的資料,可搭配and、or做多個條件的判斷,例如「=QUERY('工作表1'!A3:G,"select * where C='私立' and (D like '%新北市%' or D like '%臺北市%')")」,即會顯示所有欄位C等於「私立」的資料。

20251220_007507_04

圖4:where範例

 

Group by用來群組分類,大多是為了做統計總數、筆數、平均等,可搭配sum()、avg()等數學函式使用,試作來簡單統計公、私立學校間數,「=QUERY('工作表1'!A3:G,"select C,count(A) group by C")」。

 

Pivot可用來將數據資料行轉列,例如「=QUERY('工作表1'!A3:G,"select count(A) pivot C")」,圖5可以比較group by與pivot的不同。

20251220_007507_05

圖5:group by與pivot的比較

 

Order by用以將查詢結果排序,需選擇1至多個想要排序的欄位,還可指定以升冪或降幂排序,例如「=QUERY('工作表1'!A3:G,"select * where D like '%新北市%' order by A desc,B")」。

20251220_007507_06

圖6:order by範例

 

Limit限制傳回的行數,可獨自使用,也可搭配select使用,例如「=QUERY('工作表1'!A3:G,"limit 10")」或「=QUERY('工作表1'!A3:G,"select * limit 10")」。

 

Offset與limit相似,都是針對回傳的筆數做控制,offset會跳過指定行數,例如”offset 20”,則會從第21筆開始顯示,若搭配一起使用,需注意順序,先設定limit,再指定offset,例如「=QUERY('工作表1'!A3:G,"limit 10 offset 5")」。

20251220_007507_07

圖7:limit與offset範例

 

Label用來改變欄位標題,可依欄位個別設定,若沒有特別指定,則依預設顯示,可搭配select,也可以獨立使用,例如「=QUERY('工作表1'!A3:G, "select * label F 'TEL',E 'ADDR'")」或「=QUERY('工作表1'!A3:G, "limit 10 label F 'TEL',E 'ADDR'")」。

20251220_007507_08

圖8:label範例

 

Format可以定義顯示內容的格式,數值可設定 '#,##0.00',日期 'yyyy-MM-dd',布林值 'True:False',由於測試資料中沒有適合的內容,將以欄位C代替,例如「=QUERY('工作表1'!A3:G, "format A '#,##0.00'")」。

20251220_007507_09

圖9:format範例

 

延伸應用

QUERY中的查詢參數,支援字串的組合,可將指定欄位值,串入查詢字串中即可;圖10中,使用指定欄位B1的值,於公式參數2的字串與欄位間,以&符號串連,「=QUERY('工作表1'!A3:G,"select * where D like '%" & B1 & "%'")」,這樣就可以依B1的條件,查詢符合的結果,若再搭配下拉選項,一個簡單的查詢表單就完成了,各位可以再依據實際需求,加以變化。

20251220_007507_10

圖10:簡易查詢表單示範

 

參考來源: