本頁內容

難度
中階
所需時間
約 60–90 分鐘
你需要準備
Microsoft Excel 桌面版 · ChatGPT · Claude · 可執行巨集的 .xlsm 工作簿副本
開始之前
- 能辨認 Excel 工作表、欄標題和資料範圍
- 有權在受信任的本機副本中檢查及執行 VBA
- 先移除或匿名化客戶及公司敏感資料
這個教學不是用幾張重新畫的示意圖代替操作,而是沿着來源影片的實際時間線重建:先查看銷售資料,讓 ChatGPT 分析和規劃 Dashboard,再請 AI 產生 VBA 建立 KPI 卡片、Month/Year 輔助欄及多張 PivotTable;之後轉到 Claude 產生圖表 VBA,填入 KPI,最後加入 Year Slicer 並測試篩選。每一個畫面都對應一個有意義的操作節點。
媒體與私隱說明:封面由 ImageGen 製作;內文圖片及短片來自已獲授權的教學來源,並裁走作者、帳戶、瀏覽器及社交平台識別。短片已靜音並附繁體中文畫面字幕。全部教學媒體已於 2026-07-26 逐張人工檢查,排除重複、載入中、移動畫面模糊及沒有教學意義的幀。
先看整條製作路線
| 階段 | 來源時間 | 產物 | 主要驗收 |
|---|---|---|---|
| 理解資料 | 約 00:55–01:45 | 欄位、KPI 和問題清單 | 日期、金額、Margin 及客戶分類可解讀 |
| 建立版面 | 約 03:36–05:56 | 五張 KPI 卡片與標籤 | 重跑不產生重疊物件 |
| 建立分析層 | 約 06:39–09:34 | Month/Year 欄及 PivotTable | 所有彙總和來源數字一致 |
| 建立圖表 | 約 10:14–11:10 | 由 Claude VBA 建立的 Dashboard 圖表 | 圖表連到正確 PivotTable |
| KPI 與互動 | 約 12:50–14:09 | KPI 數值、Year Slicer、最終篩選 | 卡片與圖表同步改變且可清除篩選 |
步驟一:先讀懂原始銷售表,不要急着跑巨集
來源工作表不是空白模板,而是一張已有多個業務欄位的銷售明細。畫面可見 Date、Customer Name、Customer Type、Service、Department、City、Sales Amount、Margin %、Margin Amount、Sale Type、Customer Source 和 Package Type。先確認一列代表甚麼交易,以及客戶是否可能重複出現;否則 New Customers 和 Repeat Customers 都可能被錯算。

先複製工作簿,再另存為 .xlsm。保留一份未執行過巨集的原檔;任何客戶名稱或商業資料在送入外部 AI 前都要匿名化。本文只示範流程,沒有要求把完整工作簿上載給模型:通常提供欄名、工作表名、幾列虛構樣本和預期結果已足夠。
執行任何 AI 程式碼前的六項資料檢查
- Date:改變顯示格式後仍能正確排序,才是真正日期。
- Sales Amount/Margin Amount:確認是數值,沒有貨幣符號文字或空格。
- Margin %:釐清是列級百分比還是可彙總指標;整體 Margin 應以總 Margin Amount 除總 Sales Amount。
- Customer Type:確認 New/Repeat 的定義來自資料,而非巨集自行猜測。
- 標題:不要有合併儲存格、重複標題或完全空白欄。
- 總數:先用公式記錄未篩選的 Sales、Margin 和客戶數,作為之後的基準。
步驟二:讓 ChatGPT 分析資料並規劃 Dashboard
來源示範接着把資料結構交給 ChatGPT 分析。這一段的重點不是「AI 幫我整靚啲」,而是先決定 Dashboard 要回答甚麼:總銷售、總毛利、平均毛利率、新客戶、回頭客,以及按月份、服務、部門或城市的比較。把每個 KPI 的計算口徑寫清楚,才能在 VBA 完成後驗收。

建議在要求程式碼前先叫模型輸出一張「逐頁規格表」:每個區塊的標題、來源欄位、PivotTable 名稱、圖表種類、目標位置和驗收數字。這會大幅減少之後 VBA 硬編碼錯誤。若模型把 Average Margin 解釋成每列 Margin % 的簡單平均,立即糾正為公司採用的正式口徑。
步驟三:用 ChatGPT VBA 建立 KPI 卡片骨架
來源在約 03:36 顯示 ChatGPT 產生的 VBA,用來建立 Dashboard 上方的五張卡片。這些卡片先處理版面、標題、顏色和形狀名稱,並不代表數值已正確。將程式碼貼入 Visual Basic Editor 前,逐行尋找 Sheets(...)、Range(...)、Shapes.AddShape、刪除物件和錯誤處理。

請根據目前工作簿的 Dashboard 工作表,產生一個 Excel VBA 巨集,建立五張 KPI 卡片的版面。
要求:
- 不刪除原始資料或現有工作表;
- 先檢查 Dashboard 是否存在;
- 卡片標題為 Total Sales、Total Margin、Average Margin、New Customers、Repeat Customers;
- 只建立形狀、標籤、尺寸、顏色和對齊,暫時不要寫死 KPI 數值;
- 每個 Shape 使用唯一而可讀的名稱;
- 使用 Option Explicit;
- 不使用 On Error Resume Next 掩蓋錯誤;
- 在程式碼後逐段解釋會修改哪些儲存格及物件,並列出復原方法。不要盲目保留 On Error Resume Next。這行會令程式遇錯後繼續,結果可能只生成一半版面而沒有明顯警告。若它只是為了嘗試刪除「可能不存在」的舊 Shape,應把忽略錯誤的範圍收窄,刪除後立即恢復正常錯誤處理;更理想是先檢查物件是否存在。模組頂部加入 Option Explicit,讓未宣告變數在執行前被發現。
卡片出現後,不要只看顏色。按 Selection Pane 檢查每個 Shape 名稱是否唯一,重跑一次確認沒有再疊一套卡片,並測試 Undo 或由未改動副本復原。若巨集把數字直接寫死在形狀文字中,先停下來;最終 KPI 應連到工作表計算或 PivotTable 結果。

步驟四:新增 Month 和 Year 輔助欄
來源接着在資料右方新增 Month 和 Year。這兩欄讓後續 VBA 更容易建立月度 PivotTable 和年份切片器。若資料已轉成 Excel Table,可使用結構化公式;若仍是普通範圍,就要確保新增資料列時公式會一併填入。
Month:=TEXT([@Date],"mmm")
Year:=YEAR([@Date])若跨越多個年份,只用 TEXT(Date,"mmm") 會把不同年份的同月混合。較穩健做法是另加可排序的月份起始日,例如 =DATE(YEAR([@Date]),MONTH([@Date]),1),顯示格式再設為 yyyy-mm。來源示範的 Year 欄仍保留,供切片器使用。

步驟五:建立 PivotTable 前先確認來源範圍
在 Insert PivotTable 對話框中,確認來源包含新加入的 Month 和 Year,而不是舊的固定範圍。最好先把資料轉為命名 Table;這樣新增列較容易在 Refresh 後納入。放置位置亦要有規劃:多張 PivotTable 不能互相重疊,篩選時行列數可能擴張。

來源影片隨後使用 ChatGPT 產生的 VBA 批次建立多張 PivotTable。這是節省重複操作的部分,也是風險最高的一段:程式碼可能重複建立 PivotCache、假設固定工作表名、把金額設為 Count,或在重跑時刪走人工內容。

請為這個 Excel 工作簿產生 VBA,從銷售資料建立樞紐分析表。
來源欄位:
Date、Customer Name、Customer Type、Service、Department、City、
Sales Amount、Margin %、Margin Amount、Sale Type、Customer Source、Package Type、
Month、Year。
要求:
- 先確認來源工作表、標題列和最後一列;
- 使用同一個 PivotCache;
- 分別建立月份銷售、部門銷售、城市銷售、客戶類型和服務分析;
- 每張 PivotTable 使用唯一名稱並保留足夠間距;
- 金額欄使用 Sum,不得變成 Count;
- 重跑前只處理本巨集建立的物件,不刪除其他內容;
- 使用 Option Explicit 和明確錯誤處理;
- 不使用未限定範圍的 On Error Resume Next;
- 最後輸出人工核對清單。VBA 審查重點
- 只使用工作簿內確定存在的工作表和欄位;大小寫雖通常不敏感,空格和標點必須吻合。
- 所有 PivotTable 共用同一個來源及 PivotCache,日後 Slicer 才較容易共同連線。
Sales Amount、Margin Amount使用 Sum;若 Excel 視為文字而自動改用 Count,先修資料。- 每張表使用唯一名稱,並相隔足夠行列,避免刷新時重疊。
- 重跑只清理本巨集建立的命名物件,不使用整張工作表的粗暴
Cells.Clear。 - 任何錯誤都顯示具體工作表、欄位或物件名,不能靜默跳過。

步驟六:用 Claude 產生 Dashboard 圖表 VBA
來源流程在建立 PivotTable 後切換到 Claude,要求它根據已存在的分析表建立圖表。這不是說 Claude 天生比其他模型更適合 Excel,而是示範可以把上一階段的物件規格交給另一個模型。關鍵仍是提供確切 PivotTable 名稱和位置,並要求模型在缺少物件時停止。

請根據工作簿內已存在的命名 PivotTable,產生建立 Dashboard 圖表的 Excel VBA。
要求:
- 圖表只連到指定 PivotTable,不讀取螢幕上碰巧選中的範圍;
- 建立月度趨勢、部門比較、城市比較、服務組合等圖表;
- 每張圖表有清楚標題、可讀字體和一致色彩;
- 不使用 3D 圖;
- 不覆蓋 KPI 卡片;
- 重跑時只更新同名圖表;
- 程式碼前先列出所有假設,若 PivotTable 名稱不存在便停止並指出名稱;
- 使用 Option Explicit,並解釋每段程式碼。圖表不應依賴 ActiveSheet、Selection 或當前游標位置;這些寫法在使用者點過其他工作表後很容易失效。優先使用完整限定的 Workbook、Worksheet、PivotTable 和 ChartObject。若 AI 生成的程式碼會先刪除所有 ChartObjects,再重新建立,必須確認 Dashboard 沒有其他人工圖表。
步驟七:把 KPI 卡片連到計算結果
圖表完成後,來源把五張卡片填入實際 KPI。畫面可見的未篩選數值包括 Total Sales 3,054,204、Total Margin 931,585、Average Margin 30.50%、New Customers 182 和 Repeat Customers 298。這些只是該來源資料在當時版本的畫面結果,不是可套用到其他工作簿的答案。

驗收時至少以獨立公式重算 Total Sales 和 Total Margin,再核對 Average Margin 是否等於 Total Margin ÷ Total Sales。客戶數則要依資料定義判斷:畫面上的 182 與 298 是客戶紀錄、交易數還是唯一客戶?只有欄位規格能回答。不要因卡片總和看似合理便忽略重複姓名或分類空白。
步驟八:插入 Year Slicer,連接所有相關 PivotTable
來源最後從 Year 欄插入切片器。建立後最常見的錯誤,是它只控制當初選中的一張 PivotTable。選取切片器,打開 Report Connections/PivotTable Connections,逐一勾選 Dashboard 圖表和 KPI 所依賴的 PivotTable。若某張表沒有出現在清單,通常表示它使用了不同 PivotCache 或來源。


最終 QA:不要讓漂亮畫面掩蓋計算錯誤
| 測試 | 操作 | 合格標準 |
|---|---|---|
| 未篩選基準 | 清除所有 Slicer | 公式、PivotTable、KPI 和圖表總數一致 |
| 單一年份 | 只選一個 Year | 全部相連物件同步,年份狀態可見 |
| 逐年切換 | 連續選兩個不同年份 | 沒有殘留舊圖、舊標籤或舊 KPI |
| 無資料狀態 | 選一個沒有交易的組合 | 顯示 0 或沒有資料,不保留前一篩選 |
| 新增資料 | 在來源末端加一列再 Refresh All | Month/Year 公式延伸,所有分析包含新列 |
| 重跑巨集 | 在副本再執行一次 | 不重複卡片、圖表或 PivotTable,不刪人工內容 |
常見故障與修正次序
- Run-time error 9:先查工作表名,而不是立即加入
On Error Resume Next。 - Pivot 欄位找不到:逐字比較標題,檢查尾端空格、換行和欄名更新。
- Sales 變成 Count:來源金額含文字或空白;先清洗,再刷新。
- 月份排序錯:使用真正月份日期或 Year-Month 鍵,不以月份文字字母排序。
- 切片器漏更新:檢查 PivotCache 和 Report Connections。
- 圖表重疊:確認 VBA 使用唯一 ChartObject 名稱和固定網格,並在重跑時精準更新同名物件。
- KPI 不隨篩選:卡片可能寫死數字,應連到受同一 Slicer 控制的計算結果。
巨集安全交付清單
- 保存原始
.xlsx,只在另存的.xlsm副本測試。 - 巨集只在受信任位置或明確檢查後啟用;不要把全域安全設定改成永遠允許所有巨集。
- 開啟 VBE,閱讀每一個 Module、ThisWorkbook 和工作表事件程式碼。
- 搜尋
Kill、Shell、CreateObject、外部 URL、檔案寫入、整表清除及未限定的錯誤忽略。 - 確認所有工作表、Range、Shape、PivotTable 和 ChartObject 都以完整物件限定。
- 先單步執行或拆成小程序,再比較執行前後工作簿。
- 交付前清除測試篩選,Refresh All,重新核對總數,並記錄資料更新日期。
總結
這個來源流程真正有價值之處,不是「一句提示便完成 Dashboard」,而是把 AI 放在可檢查的製作鏈中:ChatGPT 協助分析、卡片和 PivotTable VBA,Claude 協助圖表 VBA;Excel 的原始資料、PivotTable、KPI 公式和 Slicer 連線則負責提供可驗證結果。當你保留原檔、審查程式碼、拒絕靜默錯誤、逐項對數並測試篩選,AI 才是加速器,而不是把錯誤藏得更漂亮的黑盒。
資料來源與引用
我們附上第一手及官方來源,方便你逐一核實。
常見問題
這個流程是否完全不需要 VBA?
不是。來源示範明確使用 ChatGPT 與 Claude 產生 VBA,分別建立卡片版面、PivotTable 和圖表。AI 產生的程式碼必須先在副本中審查及測試。
為何要先另存為 .xlsm?
一般 .xlsx 不會保存 VBA 專案;另存巨集啟用格式前亦應保留一份未改動副本,以便回復和比較。
Month 和 Year 輔助欄有甚麼作用?
它們讓 VBA 與 PivotTable 直接按月和年分組,亦方便建立 Year Slicer。前提是 Date 欄為真正日期,而非看似日期的文字。
可以直接執行 AI 產生的巨集嗎?
不應。先檢查工作表名稱、範圍、刪除動作、外部連線、錯誤處理及重跑行為,再於可信副本逐段執行。
切片器只更新部分圖表怎麼辦?
先確認相關 PivotTable 共用同一來源或 PivotCache,再打開 Report Connections,逐一勾選要同步的 PivotTable。
本文遵循我們的 編輯準則.

關於作者
HK Learn AI 編輯部
HK Learn AI 編輯部負責研究、查證同編寫每一篇內容,並引用官方及第一手來源。
此主題相關文章

Google AI 自學路線完整指南:Google Skills、證書、NotebookLM 與教師課程
跟隨來源示範逐步搜尋 Google Skills、使用學習 Dashboard、篩選生成式 AI 課程、完成課堂與知識檢查、查看憑證、Career Certificates、價格方案、AI Professional Certificate 及 Education Learning Center,最後按角色建立可執行路線。

Manus AI Agent 實戰:Browser Operator、Connectors、深度研究與無程式碼網頁
由任務 brief、最小權限與 Credits 上限開始,逐步使用 Manus Browser Operator、Connectors、Slides、Wide/Deep Research 和 Website Builder;再以私人分支、測試、secret scan 與人工合併控制 GitHub。本文按 2026 年官方文件更新本機與雲端執行、連接器、研究並行、費用和公司狀態。

AI 輔助研究流程:用文獻矩陣整理資料、驗證來源與反覆修正 Prompt
把資料爆炸變成可控制的研究生命週期:由問題協議、種子文獻、趨勢與相似度探索、引用脈絡、三層來源篩選、文獻矩陣、反方測試到完整 audit trail。本文提供香港研究團隊可直接使用的 Prompt、角色分工、驗證閘與披露清單。