2025年6月28日 星期六

Google Sheets 教學:輕鬆將表單多選結果拆分成多筆資料 (FLATTEN, SPLIT, QUERY 組合應用)

前言

您是否也曾遇過這樣的困擾?當您使用 Google 表單的「核取方塊」讓使用者進行多重選擇後,收集到的回覆在 Google Sheets 中會將所有選項擠在同一個儲存格裡,並用逗號隔開。例如,一個訂單表單中,客戶可能在「購買口味」欄位中一次選擇了「原味, 粉光, 人蔘」。

這樣的資料格式對於後續的數據分析、庫存管理或製作樞紐分析表都非常不便。我們真正需要的是將這筆資料拆分成三筆獨立的紀錄,每一筆對應一個口味。

今天,我們將分享一個強大的組合公式,利用 FLATTENSPLITQUERY 和 ARRAYFORMULA 這四個函數,一勞永逸地解決這個問題,將雜亂的多選結果自動轉換為乾淨、可分析的獨立資料列。


本次教學核心函數

在深入探討複雜的組合公式之前,讓我們先來了解這次會用到的幾個核心函數:

  • ARRAYFORMULA:陣列公式的啟動器。它能讓原本只對單一儲存格運作的函數,擴展到對整個範圍或陣列進行運算,是處理大量資料不可或缺的利器。

  • FLATTEN:此函數能將一個或多個範圍(二維陣列)中的所有值「扁平化」,合併成單一欄(一維陣列)。這是將多欄資料轉換為單欄的關鍵。

  • SPLIT:根據指定的分隔符號(如逗號、空格)來分割文字。它會將一個儲存格的內容拆分成多個儲存格。

  • QUERY:Google Sheets 中的 SQL 查詢語言。它能讓我們對資料範圍進行強大的篩選、排序和整理,功能非常強大。


實作步驟與公式詳解

假設我們的原始資料如下,位於 A、B、C 三欄:

日期 (A)購買人 (B)購買商品 (C)
6/24一整天原味;粉光
6/25彰化一整天原味
6/26明和厡味;粉光;人參

我們的目標是將其轉換成如下格式:

日期購買人購買商品
6/24一整天原味
6/24一整天粉光
6/25彰化一整天原味
6/26明和厡味
6/26明和粉光
6/26明和人蔘

以下是我們的完整公式,我們將由內而外逐步解析:

Generated excel

=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: 表示我們的資料沒有標題列。

這樣一來,所有無效的空行都會被過濾掉,只留下我們需要的乾淨資料。


注意事項

  1. 分隔符號的選擇:在步驟二中,我們使用 | 作為自訂的分隔符。請確保您選擇的符號 不會 出現在您的原始資料中,以免造成錯誤拆分。

  2.  的欄位引用:在使用 QUERY 函數時,若資料來源是另一個公式的結果(而不是直接的儲存格範圍),我們需要使用 Col1Col2Col3... 來引用欄位。請注意,,否則會出錯。

  3. 無限範圍:範例中使用 A1:AB1:BC1:C 是為了讓公式能自動應用到新增的資料列。

總結

透過 SPLIT -> & -> FLATTEN -> SPLIT -> QUERY 這樣一套行雲流水的組合技,我們成功地將複雜的多選資料轉換為結構清晰的表格。這不僅大大提升了資料的可讀性和可分析性,更將您從繁瑣的手動複製貼上中解放出來。希望這篇教學對您有所幫助! 



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

Google Sheets 教學:輕鬆將表單多選結果拆分成多筆資料 (FLATTEN, SPLIT, QUERY 組合應用)

前言 您是否也曾遇過這樣的困擾?當您使用 Google 表單的「核取方塊」讓使用者進行多重選擇後,收集到的回覆在 Google Sheets 中會將所有選項擠在同一個儲存格裡,並用逗號隔開。例如,一個訂單表單中,客戶可能在「購買口味」欄位中一次選擇了「原味, 粉光, 人蔘」。 這...