QUERY 函式大解析(九):與儲存格連動

更新於 發佈於 閱讀時間約 9 分鐘
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但如果你可以...
欸,這個好像很方便啊!!!(✪ω✪) 可以看到下面的 QUERY 結果隨著下拉式選單的內容改變了。感覺好像是個很高級的用法,但其實只要用「&」和儲存格串連,就可以讓 QUERY 跟儲存格互動。
我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:
今天的內容會比較複雜一點點,如果有任何不確定的地方,歡迎在留言區提問!學會後相信你對 QUERY 的認識就會再更近一步了,實用性也會大增大增。我們馬上來看看吧!٩(。・ω・。)و

基本原理:&

不知道大家有沒有聽過「&」這個東西?「&」符號可以用來連接文字與文字。像是這樣:
="A" & "B"       --> AB
="1" & "2"       --> 12
="A123" & "B456" ---> A123B456
執行結果像是這樣:
我們當然也可以用 & 來連結儲存格的資訊,例如 A1 & B1、A2 & B2、A100 & Z100。來看看這張圖:
如果我們想要在 C1 結合 A1 的「小明:」和 B1 的「165 公分」、那就可以在 C1 打上:
= A1 & B1
就會出現:
那麼想要在 C2 出現「小玉:170 公分」的話,當然「A2 & B2」就可以囉!
既然我們可以用 & 來連結儲存格,那 QUERY 也其實可以! QUERY 的語法其實是一連串由雙引號「"」開始、打入語法、再由雙引號「"」結束的文字
那麼,我們先回到上面的例子:
執行出這段 QUERY 的語法其實是:
"SELECT... 
 WHERE 欄位字母 ... " & 下拉式選單所在的儲存格 & "
 剩下的 QUERY 語句"
看起來好像有點複雜,但可以這樣想像:
    "SELECT... WHERE 欄位字母 ... "
連接(&) 下拉式選單所在的儲存格
連接(&) "剩下的 QUERY 語句"
至於這串句子裡面的兩對雙引號,你可以看成兩層:
那麼 & 的連接其實就是:淡黃色的部分 + 儲存格 + 剩下的 QUERY 語句了。那來舉幾個語法的例子:
"SELECT A, B
 WHERE A & " B1 & "
 ORDER BY A DESC"
--
"SELECT * 
 WHERE A & " B1 & "
"
--
"SELECT A, SUM(B)
 WHERE A & " B1 & "
 GROUP BY A
"
這樣一來 QUERY 就會隨著 WHERE 之後儲存格的內容、去做搜尋囉!如果想要更方便使用,可以把那個儲存格變成資料驗證(下拉式選單),就像上面的動圖一樣可以快速切換資料了。當然不做下拉式選單也可以,直接在那個儲存格上面編輯也當然 OK。

資料格式

不過我們有時得因為儲存格的資料類型不同,得稍稍改變一下語法、也有些該注意的事情,接下來我們詳細講解一下。為了方便稱呼,我們接下來會把要互動的儲存格簡稱「互動格」 唷!

數字

如果你的互動格裡面是數字,其實語法比較單純,直接用兩個 & 串起來就好了:
=QUERY(資料, "SELECT ...
             WHERE A = " & 互動格 & "
             ..."
)

布林值(TRUE / FALSE)

布林值就是 TRUE 和 FALSE。另外一種會出現 TRUE 和 FALSE 的狀況就是有核取方塊的時候,預設值是 FALSE、打勾就是 TRUE。處理的語法和數字一樣,不需要特別處理:
=QUERY(資料, "SELECT ...
WHERE A = " & 互動格 & "
..."
)

擷取時間、日期

那如果今天互動格裡面是時間或日期,想要擷取裡面的資料(例如擷取「2022 年 5 月 25 日」裡面的年份、月份、日期,又或是擷取「16:30:19」裡面的小時數、分數、秒數),我們就要運用到之前學過的日期控制術!假如互動格裡面是我們想要查找的小時數:
=QUERY(資料, "SELECT ...
             WHERE hour(A) = " & 互動格 & "
             ...")
當然,如果是秒數,那就是:
=QUERY(資料, "SELECT ...
WHERE second(A) = " & 互動格 & "
...")
以此類推!

文字

再來文字的話會比較麻煩一點點,必須要在內部連結的雙引號前後多加一個單引號「'」,這是要告訴 QUERY 互動格是文字的資訊。可以回想一下,沒有互動格的狀況下,我們要用 WHERE 找含有文字條件時,也本來就需要用到單引號:
... WHERE A = '台灣' ...
... WHERE B contains '中文' ...
... WHERE C starts with '綠島' ...
這就是為什麼使用互動格時候得加上單引號的原因囉!語法就像這樣:
=QUERY(資料, "SELECT ...  
             WHERE A = '" & 互動格 & "'  ...")
你會注意到雙引號的前後各有一個單引號包著,他們是成雙成對的,別讓他們落單!

指定日期

最後再進階一點點的就是,如果你的互動格有日期,而你的 WHERE 條件想要和它互動。不過日期在 Google 試算表算是個比較特別的資料,所以就...要用特別的方式處理:
=QUERY(資料, "SELECT ...
             WHERE A = date '"
              & TEXT(互動格, "yyyy-mm-dd")
              & "' ...")
看看上面的語法,解釋一下原理吧!
  • date 語法:可以讓 QUERY 把 date 之後的文字轉換成日期格式。
  • 單引號「'」:將互動格的資訊視為文字。
  • TEXT(互動格, "yyyy-mm-dd"):將把互動格轉成「yyyy-mm-dd」的格式,QUERY 才能進一步解析。這邊的 yyyy-mm-dd 是固定的,不能以別種形式呈現、不然 QUERY 沒辦法辨識。
如果覺得這個語法不是很好寫,直接複製貼上這段也沒問題的!

換你做做看!

這次要用到的資料在下方的「資料表」,可以點開來瞧瞧:
再來請點選資料表「練習」,有準備給大家的練習題 ⬇️
這邊我準備了各式各樣的練習,讓大家可以試試看 QUERY 和儲存格的運用!會橫跨所有上面提到的資料格式。如果練習的時候卡住了,歡迎到「練習解答」的試算表對個答案,實際做做看應該會比只看這篇文章更有幫助。
如果你已經通關、還想要再延伸應用的話,想到幾個方向給大家參考:
  1. 搭配 IFS、核取方塊等等不同條件式,做出一個可以包含複數條件的搜尋引擎
  2. 一個下拉式選單延伸到多項 QUERY,更新一次互動格就可以更新全部的 QUERY
  3. 更多用法等你來發掘 👀!

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源唷!
我是喜特先生,Mr. Sheet,我們下個教學見!
此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
14.5K會員
148內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
日幣大貶,在想著是不是該換一下手上的新台幣了 ( ´・◡・`) ? GOOGLEFINANCE 帶你找到當日的匯率,還有更多功能等你發現唷!
不知不覺寫到第七篇了!QUERY 真的有好多好多東西可以說 (ノ>ω<)ノ QUERY 其實還能處理有日期、時間的資料,而且語法也相當容易,和我們之前就看過的聚集函式很像。你如果會了之前的聚集函式,相信這次處理日期和時間也會對你來說很簡單!
IMPORTRANGE 的即時更新很方便,語法也不長,是個很實用的函式。除了單純的匯入資料以外,還有什麼應用呢?有的!ㄧ一起看下去~
生命中總會有不得已,有幾個必須把函式寫得很長的時候,要怎麼寫才不容易出錯呢?
快速找到資料中最大的數字(最大值)和最小的數字(最小值),只要三秒鐘!或許比你想像中還要簡單!
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
日幣大貶,在想著是不是該換一下手上的新台幣了 ( ´・◡・`) ? GOOGLEFINANCE 帶你找到當日的匯率,還有更多功能等你發現唷!
不知不覺寫到第七篇了!QUERY 真的有好多好多東西可以說 (ノ>ω<)ノ QUERY 其實還能處理有日期、時間的資料,而且語法也相當容易,和我們之前就看過的聚集函式很像。你如果會了之前的聚集函式,相信這次處理日期和時間也會對你來說很簡單!
IMPORTRANGE 的即時更新很方便,語法也不長,是個很實用的函式。除了單純的匯入資料以外,還有什麼應用呢?有的!ㄧ一起看下去~
生命中總會有不得已,有幾個必須把函式寫得很長的時候,要怎麼寫才不容易出錯呢?
快速找到資料中最大的數字(最大值)和最小的數字(最小值),只要三秒鐘!或許比你想像中還要簡單!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
網友提出的一個問題,如影片。 當輸入關鍵字+數量,例:起司+10 下拉式選單自動產生有關起司的產品的清單供選擇並且帶出規格、數量、金額與小計 《為什麼要做這個功能呢?》 當資料很多的時候,如果每筆資料都是用篩選的方式來找出想要的產品,可能會耗掉非常多的時間。 所以如果可以藉由關鍵字,
如何在SQL實踐中EXCEL 常用功能 篩選 和 擷取文字串?需要熟練地使用分組(GROUP BY) 與 排序 (ORDER BY) 以及SUBSTRING_INDEX函數!
Thumbnail
在POWER QUERY從0到1 #6,就有介紹過資料合併這個功能。 #6 從0到1的POWER QUERY 資料合併 神似VLOOKUP但比他好用100倍 資料合併很神似函數的VLOOKUP,但除了單純以VLOOKUP方式查找合併資料之外,總共有6種不同的合併方式。 用一個簡單的範例來做
Thumbnail
在Dcard有人求救一個問題:想要將layer與panel的資料提出出來,如下圖。 這個題目是很經典的需求,就是多條件查找,多條件查找有蠻多種不同的解決方法,甚至版本不同解法也是天壤之別哦。 準備動作 在寫函數之前,記得要先觀察一下我們想要提取的資料有什麼樣的規則,可以發現A欄中只
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
網友提出的一個問題,如影片。 當輸入關鍵字+數量,例:起司+10 下拉式選單自動產生有關起司的產品的清單供選擇並且帶出規格、數量、金額與小計 《為什麼要做這個功能呢?》 當資料很多的時候,如果每筆資料都是用篩選的方式來找出想要的產品,可能會耗掉非常多的時間。 所以如果可以藉由關鍵字,
如何在SQL實踐中EXCEL 常用功能 篩選 和 擷取文字串?需要熟練地使用分組(GROUP BY) 與 排序 (ORDER BY) 以及SUBSTRING_INDEX函數!
Thumbnail
在POWER QUERY從0到1 #6,就有介紹過資料合併這個功能。 #6 從0到1的POWER QUERY 資料合併 神似VLOOKUP但比他好用100倍 資料合併很神似函數的VLOOKUP,但除了單純以VLOOKUP方式查找合併資料之外,總共有6種不同的合併方式。 用一個簡單的範例來做
Thumbnail
在Dcard有人求救一個問題:想要將layer與panel的資料提出出來,如下圖。 這個題目是很經典的需求,就是多條件查找,多條件查找有蠻多種不同的解決方法,甚至版本不同解法也是天壤之別哦。 準備動作 在寫函數之前,記得要先觀察一下我們想要提取的資料有什麼樣的規則,可以發現A欄中只
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為