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



2025年6月27日 星期五

Excel VBA 教學:自動開啟 IE 網頁並填入表單資料,告別重複輸入的惡夢!

前言

您是否經常需要填寫固定的網路表單?每天面對大量重複的複製、貼上動作,不僅耗時費力,也容易出錯。一位網友就提出了這樣的困擾:「如果一個網頁有很多欄位要填寫,除了逐一複製貼上,有沒有更快速的輸入方式?」

為了解決這個常見的痛點,我們將介紹一個實用的 Excel VBA 工具,它能自動開啟指定的 IE 網頁,並將 Excel 表格中的資料瞬間填入對應的網頁欄位中,甚至能自動按下送出按鈕,徹底解放您的雙手!

操作步驟

讓我們透過一個實際範例,一步步學習如何使用這個強大的工具。

1. 準備測試環境

首先,我們需要一個用於測試的網頁表單和範例 Excel 檔案。

要讓 Excel 知道該把資料填到哪個欄位,我們必須先找出網頁上每個輸入欄位的「內部名稱」。

  1. 在測試網頁上點擊滑鼠右鍵,選擇「檢視網頁原始碼」(或使用快捷鍵 Ctrl + U)。

  2. 在原始碼中,找到 <form> 標籤內的 <input> 元素。我們要關注的是 name 這個屬性。

    Generated html
    <form method="post">
    ...
    <!-- 文字輸入框 -->
    使用者名稱: <input type="text" id="username" name="username">
    使用者年齡: <input type="text" id="userage" name="userage">
    
    <!-- 單選按鈕 -->
    使用者性別:
    <input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"><!-- 多選框 (注意名稱後的 []) -->
    興趣:
    <input type="checkbox" name="interest[]" value="吃"><input type="checkbox" name="interest[]" value="喝"><input type="checkbox" name="interest[]" value="玩"><input type="checkbox" name="interest[]" value="樂"><!-- 送出按鈕 -->
    <input type="submit" name="ok" value="送出">
    </form>

    Html

    從上面我們可以看到:

    • 使用者名稱的 name 是 username

    • 使用者年齡的 name 是 userage

    • 性別的 name 是 sex

    • 興趣的 name 是 interest[] (中括號 [] 表示這是一個陣列,用於接收多個值)。

    • 送出按鈕的 name 是 ok

3. 設定並執行 Excel 工具

打開下載的 excel_open_ie.xlsm 檔案,如果上方出現安全性警告,請點擊「啟用內容」。

您會看到一個已經設定好的表格,這就是我們控制自動填寫的指令中心。

  • 網址 (B1): 填入您要自動化的目標網址。

  • 送出按鈕名稱 (B2): 填入網頁原始碼中,送出按鈕的 name 屬性值(在此範例中為 ok)。

  • 參數名稱 (A欄): 依序填入您從原始碼中找到的各個欄位 name

  • 填入值 (B欄): 填入您希望對應填入的資料。

    • 文字欄位 ( 直接輸入文字或數字。

    • 單選按鈕 ( 輸入您要選擇的選項 value 值(例如 "男")。

    • 多選框 ( 若要選擇多個,請用半形逗號 , 隔開(例如 "吃,喝")。

設定完成後,點擊「自動開啟IE並填入值」按鈕。

程式會立即啟動 IE 瀏覽器,打開指定網址,將 B 欄的資料快速填入對應的欄位,並點擊送出按鈕。您會看到網頁顯示出您剛剛透過 Excel 自動輸入的結果。

進階技巧:只填入資料,不自動送出

有些網頁可能包含「圖形驗證碼 (CAPTCHA)」,需要使用者手動輸入。在這種情況下,我們希望程式只幫我們填好其他固定資料,然後讓我們手動輸入驗證碼再送出。

操作非常簡單:

  1. 在 Excel 的 B2 儲存格,將送出按鈕的名稱 (,使其變為空白。

  2. 再次點擊「自動開啟IE並填入值」按鈕。

這次,程式一樣會打開網頁並填入所有資料,但它會停在填完的畫面,不會自動送出。這時您就可以從容地輸入驗證碼,或進行最後的檢查,再手動按下「送出」按鈕。

結語

透過這個簡單的 Excel VBA 工具,您可以將繁瑣的網頁表單填寫工作自動化,大幅提升工作效率並減少人為錯誤。不論是每日報表提交、資料登錄還是活動報名,這個技巧都能派上用場。趕快下載範例檔案,親自體驗看看自動化的便利吧!



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

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