這個函式用的語言為所謂的 Google Visualization API Query Language(Google 視覺化 API 搜尋語言),是 Google 開發的一個類似 SQL 搜尋的語言。如果你不曾聽過 SQL 也沒關係,在 Google 試算表上的應用算比較直覺了,不需要很複雜的巢狀語法、也不需要新學很多很多語法。
如果你平常已經在用 SQL 來搜尋、整理資料的話,恭喜你,你的 QUERY 已經學了一大半了;如果你剛從 Excel 轉到 Google 試算表的話,我也非常推薦你從頭開始學這個強力的函式。
視覺…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。