QUERY 函式大解析(十三):MATCHES「|」用 TEXTJOIN 與範圍連動

更新於 2024/04/06閱讀時間約 9 分鐘

這邊有個台灣的旅宿清單,有各個旅宿的資訊:

我想用 QUERY 找位於「高雄市、臺南市、屏東縣、臺東縣」的旅宿資訊。如果用 OR 來寫:

=QUERY(..., "SELECT ... WHERE A = '高雄市'
OR A = '臺南市'
OR A = '屏東縣'
OR A = '臺東縣'")

用上次介紹的 MATCHES|」來寫:

=QUERY(..., "SELECT ... WHERE A MATCHES '高雄市|臺南市|屏東縣|臺東縣'")


那麽如果我們希望 QUERY 能跟範圍內的資料連動,又要怎麼做呢?

像是下面這邊,我們想用 QUERY 找位於 G 欄的「高雄市、臺南市、屏東縣、臺東縣」旅宿資訊:

raw-image

要怎麼寫呢?如果要按照之前介紹過的 QUERY 函式大解析(九):與儲存格連動,用「&」串連的話:

=QUERY(..., "SELECT ... WHERE A = '" & G2 & "'
OR A = '" & G3 & "'
OR A = '" & G4 & "'
OR A = '" & G5 & "'")

但是這方法得一個個指定儲存格,且如果日後清單再繼續增加或減少的話,就得再編輯 OR,這方法有點不太理想。

那怎麼寫更好呢?可以用 WHEREMATCHES 搭配 TEXTJOIN 函式來寫。

今天來分享 MATCHES|」跟 TEXTJOIN 的另一個應用,讓你的 QUERY 可以更彈性,條件是一個範圍的資料也能迎刃而解。

歡迎來這邊複製一份練習用的試算表,一起來做做看!先打開「練習」工作表,你會看到 A 到 E 欄是等等要 QUERY 的地方, G 欄有縣市清單:

raw-image

這次會提到三個之前介紹過的概念,如果想要複習的話,也歡迎來這看看:




思路

我們的目標是做出這樣的 QUERY

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '高雄市|臺南市|屏東縣|臺東縣'")

來看看那個 WHERE我們要試著把 MATCHES 後面的那串跟縣市清單連在一起,讓它成為「高雄市|臺南市|屏東縣|臺東縣」這樣的正規表達式咒語

怎麼做呢?先說結論,有兩個步驟:

  1. TEXTJOIN 函式,把縣市清單內的儲存格以「|」為連結字元串在一起,形成一個像是「a|b|c|d|...」的文字,即是正規表達式的「咒語」。
  2. & 字元與第一個步驟的結果連接,把它跟 MATCHES 接上。

這樣就可以讓 QUERY 跟範圍連動在一起了。


第一步:TEXTJOIN 函式

我們先在 H2 寫 TEXTJOIN 函式,把縣市清單串在一起看看吧。輸入:

=TEXTJOIN("|", TRUE, G2:G)
  • 串連字元:|
  • 忽略空白:是
  • 範圍:G2 到 G(整個 G2 以下的範圍)
raw-image

結果就順利顯示了我們要的正規表達式「咒語」:

raw-image

你可以在 G 欄的清單這邊加入新的縣市,看看 H2 的結果會不會跟著改變。我這邊加入了「花蓮縣」,H2 ​成功跟著連動了:

raw-image



第二步:用 & 字元跟 TEXTJOIN 結果連接,把它跟 MATCHES 接上

好,既然要讓 QUERY 可以跟儲存格互動,要出動 & 啦!我們在 A2,按照題目需求先完成前半段的 QUERY

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES
raw-image


因為等等要和 H2 的文字連結,我們要先起一個單引號「'」:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '

再來用雙引號「"」暫時先把目前的 QUERY 指令先關起來:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '"

然後我們用 & 字元,串連 H2:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2

再來寫第二個 &、準備繼續連接 QUERY 指令:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2 &

接著是雙引號「"」,準備把剩下的 QUERY 寫完:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2 & "

寫單引號「'」,讓 MATCHES 結束。

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2 & "'

接下來我們還可以繼續寫其他的 QUERY 語句(ORDER BYLIMIT 等),舉例來說,按照 A 欄位做排序後再按 B 欄位排序:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2 & "'
ORDER BY A, B")

如果沒打算繼續寫的話,你可以寫上雙引號「"」讓 QUERY 語句結束:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & H2 & "'")

颯爽按下 Enter 鍵,看看結果:

raw-image

成功啦!你可以自由測試,把清單改成不同縣市,看看執行結果怎麼樣:

raw-image

當然你也可以一次把第一步跟第二步寫好,像這樣:

=QUERY('台灣旅宿網旅宿清單'!A:L,
"SELECT C, A, B, K, L
WHERE A MATCHES '" & TEXTJOIN("|", TRUE, G2:G) & "'")

結果也完全一樣的唷!


你可以考慮用這招,讓 TEXTJOIN 函式去取動態更新的範圍(像是 IMPORTRANGEQUERYFILTER 等),可以讓你的 QUERY 更有彈性喔!希望這招對你有幫助。



如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

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

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


avatar-img
14.0K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
這是「按條件算OO」系列文的第二篇教學!今天會來聊聊 AVERAGEIF 和 AVERAGEIFS。
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
一起來看看怎麼做 MIN 吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,會分享在 Google 試算表上簡單又實用的五種函式 SUM、AVERAGE、COUNT 與 COUNTA、MAX、 MIN ,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
來看看怎麼用 MAX 吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,會分享在 Google 試算表上簡單又實用的五種函式 SUM、AVERAGE、COUNT 與 COUNTA、MAX、 MIN ,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
一起看看 COUNT 跟 COUNTA 如何操作吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
這是「按條件算OO」系列文的第二篇教學!今天會來聊聊 AVERAGEIF 和 AVERAGEIFS。
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
一起來看看怎麼做 MIN 吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,會分享在 Google 試算表上簡單又實用的五種函式 SUM、AVERAGE、COUNT 與 COUNTA、MAX、 MIN ,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
來看看怎麼用 MAX 吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,會分享在 Google 試算表上簡單又實用的五種函式 SUM、AVERAGE、COUNT 與 COUNTA、MAX、 MIN ,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
一起看看 COUNT 跟 COUNTA 如何操作吧!這篇教學是喜特先生為 Google 試算表新手而寫的「聚集函式御五家」系列文之一,每篇都會解釋語法、並且附上一個簡單的例子讓你可以一起練習。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
POWER QUERY取得資料的方式五花八門,使用正確的方式匯入資料,可以讓資料取得與處理事半功倍哦 從表格/範圍 從檔案 從資料夾 從文字檔 從網頁 從GOOGLE SHEET 📌影片教學 直接看影片教學把各種不同抓取資料的方式學起來吧,觀看教學影片前可以
Thumbnail
📌附加與合併差異 POWER QUERY附加的另一個好朋友就是資料合併,來了解一下這兩個功能的差異。 附加 就是把多個資料來源,資料中相同標題的資料往下疊加結合再一起 合併 依據某一欄(PQ稱為資料行)的內容作為關鍵字,將其他資料來源依據相同的關鍵字把資料整合再一起。 有沒有發
Thumbnail
資料處理中日期格式是一定會遇到的一個課題,而在台灣日期又有民國年與西元年,很不幸的在EXCEL上,日期有它自己的標準設定模式,YYYY/MM/DD,如果不是依照這種格式進行輸入,那個日期就是僅供觀看不能進行任何計算。 延伸閱讀:EXCEL日期正確的輸入方式,與常見錯誤之日期格式輸入 而不盡少數的
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
稍微複雜一點的 query 其實代表著某些商業邏輯,若把這一段程式放到 repository 的實作層,會變成這些商業邏輯被隱藏起來了,如果有個好的描述語言,我倒覺得很好讀,也可以清楚知道背後的商業邏輯是什麼,是很好的一件事。
Thumbnail
POWER QUERY這個功能從EXCEL2016之後就內建EXCEL軟體中了,跟函數相比有涉略PQWER QUERY的人相對少很多,網路中文的相關資源也是。 但其實POWER QUERY相較於EXCEL的函數與VBA是更加容易上手的,他有完善的使用者介面,絕大部分的需求只需要滑鼠點一點就能達成,
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
資料形態一個申請日期中有多個聯絡人與相對應的MAIL,而且聯絡人都是放在同一個儲存格中並且以逗號分隔,MAIL亦同,這樣要如何把聯絡人與MAIL拆分成一個聯絡人一列的資料呢? 不囉嗦我們先來看成果,檔案下載(點我) 這麼方便的效果怎麼做的呢?其實用POWER QUERY完全不用寫任何程式就能完成了,
Thumbnail
先來看看最終成果 檔案下載,點我~ 以月分+部門進行分析的資料,無法直接用圖表繪製出以月分累加的折線圖,必須靠函數輔助才有辦法達成 其實POWER QUERY可以快速處理這個問題,而且未來數據新增時,只要點一下重新整理就能快速完成是不是超棒的! 現在就來看教學吧,2分鐘學起來~~~ 覺得分享有幫助到
Thumbnail
先來看一下成果展示 今天有粉絲提出一個問題,一個儲存格中有很多行資料,要依據換行符號將所有內容橫向展開。 這個需求有許多種解法 函數解: =TRIM(MID(SUBSTITUTE(B5,CHAR(10),REPT(" ",100)),SEQUENCE(,10,1,100),100)) 對於函數很熟悉
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
POWER QUERY取得資料的方式五花八門,使用正確的方式匯入資料,可以讓資料取得與處理事半功倍哦 從表格/範圍 從檔案 從資料夾 從文字檔 從網頁 從GOOGLE SHEET 📌影片教學 直接看影片教學把各種不同抓取資料的方式學起來吧,觀看教學影片前可以
Thumbnail
📌附加與合併差異 POWER QUERY附加的另一個好朋友就是資料合併,來了解一下這兩個功能的差異。 附加 就是把多個資料來源,資料中相同標題的資料往下疊加結合再一起 合併 依據某一欄(PQ稱為資料行)的內容作為關鍵字,將其他資料來源依據相同的關鍵字把資料整合再一起。 有沒有發
Thumbnail
資料處理中日期格式是一定會遇到的一個課題,而在台灣日期又有民國年與西元年,很不幸的在EXCEL上,日期有它自己的標準設定模式,YYYY/MM/DD,如果不是依照這種格式進行輸入,那個日期就是僅供觀看不能進行任何計算。 延伸閱讀:EXCEL日期正確的輸入方式,與常見錯誤之日期格式輸入 而不盡少數的
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
稍微複雜一點的 query 其實代表著某些商業邏輯,若把這一段程式放到 repository 的實作層,會變成這些商業邏輯被隱藏起來了,如果有個好的描述語言,我倒覺得很好讀,也可以清楚知道背後的商業邏輯是什麼,是很好的一件事。
Thumbnail
POWER QUERY這個功能從EXCEL2016之後就內建EXCEL軟體中了,跟函數相比有涉略PQWER QUERY的人相對少很多,網路中文的相關資源也是。 但其實POWER QUERY相較於EXCEL的函數與VBA是更加容易上手的,他有完善的使用者介面,絕大部分的需求只需要滑鼠點一點就能達成,
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
資料形態一個申請日期中有多個聯絡人與相對應的MAIL,而且聯絡人都是放在同一個儲存格中並且以逗號分隔,MAIL亦同,這樣要如何把聯絡人與MAIL拆分成一個聯絡人一列的資料呢? 不囉嗦我們先來看成果,檔案下載(點我) 這麼方便的效果怎麼做的呢?其實用POWER QUERY完全不用寫任何程式就能完成了,
Thumbnail
先來看看最終成果 檔案下載,點我~ 以月分+部門進行分析的資料,無法直接用圖表繪製出以月分累加的折線圖,必須靠函數輔助才有辦法達成 其實POWER QUERY可以快速處理這個問題,而且未來數據新增時,只要點一下重新整理就能快速完成是不是超棒的! 現在就來看教學吧,2分鐘學起來~~~ 覺得分享有幫助到
Thumbnail
先來看一下成果展示 今天有粉絲提出一個問題,一個儲存格中有很多行資料,要依據換行符號將所有內容橫向展開。 這個需求有許多種解法 函數解: =TRIM(MID(SUBSTITUTE(B5,CHAR(10),REPT(" ",100)),SEQUENCE(,10,1,100),100)) 對於函數很熟悉