0. 為何要自製數據清理工具?
從一張銷售日報說起
你是電商老闆。每天早上打開後台,匯出昨天的銷售日報,要算每個商品的營收填到 E 欄位。
| A 欄・商品 | B 欄・單價 | C 欄・銷量 | D 欄・庫存 | E 欄・營收 |
|---|---|---|---|---|
| 洋芋片綜合包 | 80 | 25 | 8 | ? |
| 氣泡水 24 入 | 580 | 12 | 35 | ? |
| 抽取式衛生紙 | 299 | 18 | 4 | ? |
這個小問題你一定遇過。但「E 欄要怎麼算」這件事,其實藏著一段你早就走過的進化。
同一個問題,你走過兩個階段
以洋芋片那一列(單價 80、銷量 25)為例:
第一階段・手算
拿計算機按 80 × 25 = 2000,填到 E1。下一個商品再按一次,5 個商品按 5 次。
第二階段・用公式
在 E1 寫 =B1*C1,往下一拖,5 列瞬間填滿。你只「想」一次,電腦幫你重複 5 次。
不僅僅是營收,還要做...
一天的銷售跑完,這張日報擺在你手上,你不會只算營收就收工。你會做這 4 個動作:
| A・商品 | B・單價 | C・銷量 | D・庫存 | E・營收 | F・毛利 | G・排名 |
|---|---|---|---|---|---|---|
| 洋芋片綜合包 | 80 | 25 | 8 | — | — | — |
| 氣泡水 24 入 | 580 | 12 | 35 | — | — | — |
| 抽取式衛生紙 | 299 | 18 | 4 | — | — | — |
| 巧克力餅乾禮盒 | 450 | 8 | 22 | — | — | — |
| 即溶咖啡包 | 200 | 30 | 15 | — | — | — |
如果有一個按鈕,能一次做完這 4 個動作呢?
剛剛你看到「算營收、算毛利、低庫存標紅、暢銷排名」是一個一個套上去的。
但實際工作裡,這 4 個動作對你來說就是「一件事」——把今天的銷售日報收尾。
下一頁按下按鈕,看看「一鍵」是什麼感覺。
| A・商品 | B・單價 | C・銷量 | D・庫存 | E・營收 | F・毛利 | G・排名 |
|---|---|---|---|---|---|---|
| 洋芋片綜合包 | 80 | 25 | 8 | — | — | — |
| 氣泡水 24 入 | 580 | 12 | 35 | — | — | — |
| 抽取式衛生紙 | 299 | 18 | 4 | — | — | — |
| 巧克力餅乾禮盒 | 450 | 8 | 22 | — | — | — |
| 即溶咖啡包 | 200 | 30 | 15 | — | — | — |
資料處理的大方向,就這四種操作
辦公室裡千百種 Excel 痛點,剝開來其實就分成這四類操作:
一、數值計算
對欄位做加總、平均、排名、條件標記等運算。
二、資料清理
砍掉沒用的欄位、統一格式、補空值。
三、資料整合
把多個結構類似的檔案合併成一張總表,並標記來源。
四、資料分割
把總表依某個欄位(部門、月份…)拆成多個子檔。
1. 蝦皮訂單清理
數據清理
| 姓名 | 交易時間 | 訂單編號 | 交易金額(NT$) | 連絡電話 | |
|---|---|---|---|---|---|
| 王小明 | 2025-10-01 09:32 | ORD-20251001-001 | 1280 | xiaoming.wang@example.com | 0912345678 |
| 陳小華 | 2025-10-02 14:15 | ORD-20251002-002 | 650 | xiaohua.chen@example.com | |
| 林大明 | 2025-10-03 10:48 | ORD-20251003-003 | 2990 | daming.lin@example.com | 0934567890 |
| 張小美 | 2025-10-04 16:22 | ORD-20251004-004 | 890 | xiaomei.zhang@example.com | 0945678901 |
| 李小強 | 2025-10-05 11:05 | ORD-20251005-005 | 3500 | xiaoqiang.li@example.com | 0956789012 |
讓 AI 一次寫完,常常會卡關。換個做法:
一階一階往上疊:每一步都先跑通、看到結果,再讓 AI 加下一階。少了「全部寫完才發現某段壞掉」的回頭路。
把任務切成五階之後,每完成一個 Prompt 都先回測一次,不要一口氣跑到底。回測的動作很簡單:把範例 .xlsx 重新拖進 App,看輸出是不是你要的長相。
| 姓名 | 交易時間 | 訂單編號 | 交易金額(NT$) | 連絡電話 | |
|---|---|---|---|---|---|
| 王小明 | 2025-10-01 09:32 | ORD-20251001-001 | 1280 | xiaoming.wang@example.com | 0912-345-678 |
| 陳小華 | 2025-10-02 14:15 | ORD-20251002-002 | 650 | xiaohua.chen@example.com | 缺 |
| 林大明 | 2025-10-03 10:48 | ORD-20251003-003 | 2990 | daming.lin@example.com | 0934-567-890 |
| 張小美 | 2025-10-04 16:22 | ORD-20251004-004 | 890 | xiaomei.zhang@example.com | 0945-678-901 |
| 李小強 | 2025-10-05 11:05 | ORD-20251005-005 | 3500 | xiaoqiang.li@example.com | 0956-789-012 |
2. 清理與對齊
清理與對齊
月底要對帳,你手上有三個通路的訂單檔——蝦皮、Momo、PChome。一打開就發現:明明都是訂單,欄位名稱不一樣、順序也不一樣,有的甚至是英文。欄位對不齊,就很難把資料整合起來做後續的統計與分析。
蝦皮
買家 / 總金額 / 訂單時間 / 商品 / 物流狀態 / 訂單編號
Momo
品項 / 訂單狀態 / 結帳時間 / 客戶姓名 / 單號 / 金額
PChome
Status / Customer / OrderID / Price / Product / Date
蝦皮10 筆 · 6 欄
| 買家 | 總金額 | 訂單時間 | 商品 | 物流狀態 | 訂單編號 |
|---|---|---|---|---|---|
| 鄒小芳 | 320 | 2026-11-03 | 洋芋片綜合包 | 已送達 | SP2026001 |
Momo10 筆 · 6 欄
| 品項 | 訂單狀態 | 結帳時間 | 客戶姓名 | 單號 | 金額 |
|---|---|---|---|---|---|
| 運動飲料 600ml | 已送達 | 2026-11-02 | 武大明 | POS-1102-01 | 35 |
PChome10 筆 · 6 欄
| Status | Customer | OrderID | Price | Product | Date |
|---|---|---|---|---|---|
| 已送達 | 段小宇 | LN-0001 | 390 | 手沖濾掛咖啡 10 入 | 2026-11-01 |
3. 合併與拆分
合併與拆分
資料清理乾淨後,把多份疊成總表,再依需求拆給不同收件對象
上一章已經把蝦皮 / Momo / PChome 三通路的欄位對齊到同一套 schema。對齊之後,這個月的訂單就能接著做兩個動作——這一章就從那邊接著做:
1. 合併(Merge)
三通路已對齊 schema 的訂單,直接疊成一份乾淨的訂單總表,核心欄位一次看完。
2. 拆分(Split)
依送貨「狀態」(已送達 / 配送中 / 剛下訂)把總表拆成 3 份小檔,各檔保留「來源」方便追溯,分給會計、物流、客服。
蝦皮已對齊 schema
| 訂單編號 | 客戶 | 商品 | 金額 | 狀態 | 日期 |
|---|---|---|---|---|---|
| SP-11-001 | 韓小英 | 即溶咖啡包 | 680 | 已送達 | 2026-11-05 |
| SP-11-002 | 連小強 | 洗衣精補充包 | 220 | 配送中 | 2026-11-18 |
Momo已對齊 schema
| 訂單編號 | 客戶 | 商品 | 金額 | 狀態 | 日期 |
|---|---|---|---|---|---|
| MO-11-007 | 武大明 | 運動飲料 600ml | 35 | 已送達 | 2026-11-02 |
| MO-11-008 | 鄔小芳 | 便當(招牌雞腿) | 120 | 剛下訂 | 2026-11-26 |
PChome已對齊 schema
| 訂單編號 | 客戶 | 商品 | 金額 | 狀態 | 日期 |
|---|---|---|---|---|---|
| PC-11-003 | 段小宇 | 手沖濾掛咖啡 10 入 | 390 | 配送中 | 2026-11-08 |
| PC-11-004 | 牛大明 | 蜂蜜檸檬茶禮盒 | 520 | 剛下訂 | 2026-11-15 |
4. 一個 App 還是兩個?
把第 2 章的清理和第 3 章的合併拆分接起來看,整個 pipeline 其實有五階。每一階背後都還有更細的決策——把它拆開來看:
前 3 階是第 2 章的清理、第 4 階是合併、第 5 階是拆分——前面任何一步沒對齊,後面就會錯位。
2 + 3 = 一個 All-in-One?
清理對齊 + 合併拆分明明連在一起——做成一個 App 不是更方便?等等再回答。
第 2 章(清理對齊)和第 3 章(合併拆分)其實是連在一起的——對齊好的三通路訂單,下一步就是合併、拆分。
所以你也可以把它們做成一個 All-in-One 的 App:丟三份原始檔,按一下,直接得到拆分好的小檔。下一頁實際跑一次給你看:
蝦皮_11月訂單.xlsx2 筆 · 6 欄
| 訂單時間 | 訂單編號 | 買家 | 商品 | 總金額 | 物流狀態 |
|---|---|---|---|---|---|
| 2026-11-05 | SP-11-001 | 韓小英 | 即溶咖啡包 | 680 | 已送達 |
| 2026-11-18 | SP-11-002 | 連小強 | 洗衣精補充包 | 220 | 配送中 |
Momo_11月訂單.xlsx2 筆 · 6 欄
| 結帳時間 | 單號 | 品項 | 金額 | 客戶姓名 | 訂單狀態 |
|---|---|---|---|---|---|
| 2026-11-02 | MO-11-007 | 運動飲料 600ml | 35 | 武大明 | 已送達 |
| 2026-11-26 | MO-11-008 | 便當(招牌雞腿) | 120 | 鄔小芳 | 剛下訂 |
PChome_11月訂單.xlsx2 筆 · 6 欄
| OrderID | Date | Customer | Product | Price | Status |
|---|---|---|---|---|---|
| PC-11-003 | 2026-11-08 | 段小宇 | 手沖濾掛咖啡 10 入 | 390 | 配送中 |
| PC-11-004 | 2026-11-15 | 牛大明 | 蜂蜜檸檬茶禮盒 | 520 | 剛下訂 |
看起來 All-in-One 很爽——但實務上應該做一個還是兩個?
| ① All-in-One App | ② 分開兩個 App | |
|---|---|---|
| 優點 | ? | ? |
| 缺點 | ? | ? |
兩種做法各有取捨:
| ① All-in-One App | ② 分開兩個 App | |
|---|---|---|
| 優點 | 非常方便,三份原始檔丟進去,一鍵到位拆完拿走。 | 對齊完的總表可以「抽出來」交給別的 App 用(例如下一章批次套印)。流程模組化、各自能複用。 |
| 缺點 | 流程綁死,中途那份「合併好、還沒拆」的總表抽不出來,想單獨拿去做別的事就卡住;而且任何一階要改規則,都得動到整個 App。 | 多一次手動傳檔(前一個 App 的輸出 → 下一個 App 的輸入)。檔案管理、版本對應的責任會落到使用者身上。 |
怎麼選?看「中途的檔案」有沒有別處要用
上一頁的優缺點表不會直接給你答案——真正的判準只有一個:這條流水線中途會產生的檔案(不管是合併好的總表,還是拆出來的某一份),有沒有別的流程要拿去用?
為什麼這門課選擇「拆成兩個」?
本系列課程選擇拆成兩個 App,是因為下一章「批次套印」要拿其中一份「拆出來的已送達訂單」當料表,這份檔必須能單獨抽出來、交給下一個 App;如果中途的檔案用完就丟、沒別人要,那 All-in-One 一鍵到底反而更務實。
5. 批次套印
批次套印
拿上一章拆出來的「已送達訂單」當料表,一份範本一鍵產出 N 份出貨通知信
同一份出貨通知信範本,搭一份已送達訂單名單,就會跑出兩份各自不同的通知信。客戶、訂單編號、商品、金額、寄送地址這幾處(黃色標起來)每份不同,其餘問候語、版型一字不差:
出貨通知信
親愛的 韓小英 您好,您的訂單 SP-11-001 已出貨。商品「即溶咖啡包」,金額 $680,寄送至 台北市大安區…。
出貨通知信
親愛的 武大明 您好,您的訂單 MO-11-007 已出貨。商品「運動飲料 600ml」,金額 $35,寄送至 新北市板橋區…。
兩份之間就只差這幾處——其他問候語、結尾簽章完全一樣。
回頭看那三份通知信——它們之間的差異只有那幾格:客戶、訂單編號、商品、金額、寄送地址、出貨日期。其他 99% 的問候語、簽章、版型一字不差。
拿第一份通知信,把會變的那幾格挖掉,在每個洞貼上 { } 標籤 告訴電腦這格之後要填什麼欄位——剩下這份就叫模板。 用 Word 排好版、存成 .docx,這就是批次套印的第一塊拼圖。
第一份通知信(原樣)
親愛的 韓小英 您好,您的訂單 SP-11-001 已出貨。商品「即溶咖啡包」,金額 $680。
挖洞 + 貼標籤(shipping.docx)
親愛的 {客戶} 您好,您的訂單 {訂單編號} 已出貨。商品「{商品}」,金額 {金額}。
模板有了,下一個問題自然冒出來:{客戶}、{訂單編號}、{商品} 的「填料」要從哪裡來? 答案是另一份檔案——就是上一章拆出來的「11月訂單_已送達.xlsx」,欄位名稱直接對到模板裡 { } 的「名字」:
| 訂單編號 | 客戶 | 商品 | 金額 | 寄送地址 |
|---|---|---|---|---|
| SP-11-001 | 韓小英 | 即溶咖啡包 | $680 | 台北市大安區和平東路一段 123 號 5 樓 |
| MO-11-007 | 武大明 | 運動飲料 600ml | $35 | 新北市板橋區文化路二段 45 號 3 樓之 2 |
| PC-11-003 | 段小宇 | 手沖濾掛咖啡 10 入 | $390 | 台中市西屯區市政北二路 88 號 12 樓 |
每一列 = 一份通知信。三列就產三份 .docx。
{ } 裡的名字,跟 .xlsx 的欄位名稱一字不差地對應,電腦就知道每格要填哪欄的值:
shipping.docx 範本
親愛的 {客戶} 您好,您的訂單 {訂單編號} 已出貨。商品「{商品}」,金額 {金額}。
11月訂單_已送達.xlsx
| 訂單編號 | 客戶 | 商品 | 金額 |
|---|---|---|---|
| SP-11-001 | 韓小英 | 即溶咖啡包 | $680 |
| MO-11-007 | 武大明 | 運動飲料 600ml | $35 |
把模板 + 名單丟給電腦,它把每一列代入 { } 標籤——產出的兩份 .docx,就是開場那兩份通知信:
韓小英_出貨通知.docx
親愛的 韓小英 您好,您的訂單 SP-11-001 已出貨。商品「即溶咖啡包」,金額 $680。
武大明_出貨通知.docx
親愛的 武大明 您好,您的訂單 MO-11-007 已出貨。商品「運動飲料 600ml」,金額 $35。
名單幾列就幾份,範本永遠只有一份——這就是批次套印。
出貨通知信批次產出
概念懂了——那 30 筆訂單的通知信怎麼真的做出來?下面這個工具跑給你看
上面那個 demo 看起來只有「上傳兩個檔案 → 一鍵產生」,但拆開來其實是六個 prompt 一階一階堆出來的。每一階各自解一個小問題:
前兩階是「準備材料」、3-4 階是「對齊單筆」、後兩階才開始「批次規模化」——每一階堆穩了,下一階才跑得動。
6. 用 AI 產生假測試資料
用 AI 產生假測試資料
真資料有個資,先用 AI 造一份結構相同的來練
真實檔裡藏的全是個資
實際做資料處理時,手邊的檔案常常是含個資的真實檔——員工名單有姓名跟電話、訂單檔有客戶 Email 跟交易金額、學員名單有身分證字號。 這些檔案丟給 AI 練 Prompt,等於把客戶與同事的個資直接上傳到外部服務。
解法:留結構、換假資料
留下欄位結構,把資料換成 AI 生成的假資料。練完整套流程後,再把真檔換回去跑正式版。
我們要請 AI 產出的,就是這種長相的表格——欄位結構跟真檔一樣,但內容全是生成的假資料:
| 姓名 | 電話 | |
|---|---|---|
| 王小明 | 0912-345-678 | xiaoming.wang@example.com |
| 陳怡君 | 0923-456-789 | yijun.chen@example.com |
| 林志豪 | 0934-567-890 | zhihao.lin@example.com |
| 張雅婷 | 0945-678-901 | yating.zhang@example.com |
| 李俊賢 | 0956-789-012 | junxian.li@example.com |
把下面這段複製到 Gemini,就會得到上一頁那種 5 筆假資料表,並附 .xlsx 下載連結,可直接拿去跑前面三章的清理、合併、套印流程:
7. 總結
總結
這是新工具,不是萬能解
學完不代表你要扔掉 Excel
台北到台中,飛機飛行 50 分鐘比火車快兩小時——但加上提前到機場、安檢、接駁,總時間可能比高鐵還久。
飛機不是「比火車好」,而是「在某些情境下比火車好」。Vibe Coding 跟 Excel 公式的關係也是這樣。
已經跑得順的工作流,沒事不要動。挑出真正適合的場景,再導入新工具。
盤點手邊的 100 項工作流,挑 2~3 個試試
具備這些特徵的工作流,最值得用 micro app 改寫:
每月/每週都要重做一次
一次優化,長期受益。
每次來的檔案結構會變
公式綁死的痛你最懂。
有 3 個以上的處理步驟
巢狀 IF 開始爆炸時。
含個資、不能上傳線上工具
micro app 在本機跑,資料不外流。