前言
您是否也曾遇過這樣的困擾?當您使用 Google 表單的「核取方塊」讓使用者進行多重選擇後,收集到的回覆在 Google Sheets 中會將所有選項擠在同一個儲存格裡,並用逗號隔開。例如,一個訂單表單中,客戶可能在「購買口味」欄位中一次選擇了「原味, 粉光, 人蔘」。
這樣的資料格式對於後續的數據分析、庫存管理或製作樞紐分析表都非常不便。我們真正需要的是將這筆資料拆分成三筆獨立的紀錄,每一筆對應一個口味。
今天,我們將分享一個強大的組合公式,利用 FLATTEN、SPLIT、QUERY 和 ARRAYFORMULA 這四個函數,一勞永逸地解決這個問題,將雜亂的多選結果自動轉換為乾淨、可分析的獨立資料列。
本次教學核心函數
在深入探討複雜的組合公式之前,讓我們先來了解這次會用到的幾個核心函數:
ARRAYFORMULA:陣列公式的啟動器。它能讓原本只對單一儲存格運作的函數,擴展到對整個範圍或陣列進行運算,是處理大量資料不可或缺的利器。
FLATTEN:此函數能將一個或多個範圍(二維陣列)中的所有值「扁平化」,合併成單一欄(一維陣列)。這是將多欄資料轉換為單欄的關鍵。
SPLIT:根據指定的分隔符號(如逗號、空格)來分割文字。它會將一個儲存格的內容拆分成多個儲存格。
QUERY:Google Sheets 中的 SQL 查詢語言。它能讓我們對資料範圍進行強大的篩選、排序和整理,功能非常強大。
實作步驟與公式詳解
假設我們的原始資料如下,位於 A、B、C 三欄:
6/24 | 一整天 | 原味;粉光 |
6/25 | 彰化一整天 | 原味 |
6/26 | 明和 | 厡味;粉光;人參 |
我們的目標是將其轉換成如下格式:
6/24 | 一整天 | 原味 |
6/24 | 一整天 | 粉光 |
6/25 | 彰化一整天 | 原味 |
6/26 | 明和 | 厡味 |
6/26 | 明和 | 粉光 |
6/26 | 明和 | 人蔘 |
以下是我們的完整公式,我們將由內而外逐步解析:
=ARRAYFORMULA(QUERY(SPLIT(FLATTEN(A1:A&"|"&B1:B&"|"&SPLIT(C1:C,";")),"|"),"select * where Col3 is not null",0))
步驟一:拆分多選項目 (內層的
SPLIT(C1:C, ";")
這是公式的核心起點。我們首先針對 C 欄(購買商品)進行處理,使用分號 , 作為分隔符號,將每個儲存格的內容拆分開來。例如,「原味, 粉光」會被拆成兩個獨立的欄位:「原味」和「粉光」。
步驟二:組合固定欄位與拆分後的項目 (
A1:A & "|" & B1:B & "|" & SPLIT(C1:C,";")
接著,我們將固定不變的欄位(A 欄的日期和 B 欄的購買人)與上一步拆分後的商品項目組合起來。這裡我們使用 & 符號進行文字串接,並以一個特殊符號 | 作為新的分隔符。
完成這一步後,我們的資料會暫時變成一個二維陣列,看起來像這樣:
6/24|一整天|原味 | 6/24|一整天|粉光 |
6/25|彰化一整天|原味 | |
6/26|明和|原味 | 6/26|明和|粉光 |
步驟三:將二維陣列扁平化為一維 (
FLATTEN(...)
FLATTEN 函數在這裡發揮了關鍵作用。它會將上一步產生的二維陣列(多行多列)「壓平」,變成一個長長的單欄資料。所有儲存格的內容會由左至右、由上至下地被排列到一個欄位中。
步驟四:再次拆分,還原欄位結構 (外層的
SPLIT(FLATTEN(...), "|")
現在我們有了一個乾淨的單欄資料,每一筆都包含了「日期|購買人|商品」。我們再次使用 SPLIT 函數,這次用我們自訂的分隔符 | 來拆分,將每一筆資料還原成三個獨立的欄位。
步驟五:清理空值,取得最終結果 (
QUERY(..., "select * where Col3 is not null", 0)
經過前幾步的轉換,資料中可能會產生一些空行或無效資料。最後,我們用 QUERY 函數來進行最後的清理。
select *: 選取所有欄位。
where Col3 is not null: 這是篩選條件,表示只保留第 3 欄(Col3,也就是商品欄)不是空值的資料列。
0: 表示我們的資料沒有標題列。
這樣一來,所有無效的空行都會被過濾掉,只留下我們需要的乾淨資料。
注意事項
分隔符號的選擇:在步驟二中,我們使用 | 作為自訂的分隔符。請確保您選擇的符號 不會 出現在您的原始資料中,以免造成錯誤拆分。
的欄位引用:在使用 QUERY 函數時,若資料來源是另一個公式的結果(而不是直接的儲存格範圍),我們需要使用 Col1, Col2, Col3... 來引用欄位。請注意,,否則會出錯。
無限範圍:範例中使用 A1:A, B1:B, C1:C 是為了讓公式能自動應用到新增的資料列。
總結
透過 SPLIT -> & -> FLATTEN -> SPLIT -> QUERY 這樣一套行雲流水的組合技,我們成功地將複雜的多選資料轉換為結構清晰的表格。這不僅大大提升了資料的可讀性和可分析性,更將您從繁瑣的手動複製貼上中解放出來。希望這篇教學對您有所幫助!