Excel VBA 整理資料:用 ChatGPT 清除空白列與重複資料

Excel VBA 整理資料,做法不是重新寫程式,而是把已經抓到的原始資料,透過 AI 一步一步修正成乾淨的標準表格。贊贊小屋這次示範兩種做法:先請 AI 把匯率觀念整理成 Excel FAQ 說明工作表,再把實際執行結果交給 ChatGPT,一輪一輪修正 VBA,直到整理出一張沒有空白列、沒有重複幣別的資料表。

Excel VBA 整理資料:用 ChatGPT 清除空白列與重複資料

一、Excel VBA 整理資料,AI 還能幫上哪些忙

贊贊小屋延續上一篇 Excel 自動抓取網頁資料 抓到的匯率資料,接下來要處理的是資料整理,而在這個過程中,常會遇到單純的概念問題,例如「現金匯率」與「即期匯率」到底差在哪裡、「買入」與「賣出」又是站在誰的角度。這類問題不需要先摸索原始資料,直接問 AI 通常就能得到清楚答案。贊贊小屋接下來會把這類回答,再請 AI 整理成一份「問題、答案、重點」三欄表格,直接貼進 Excel 檔案中,變成一份可以留在報表裡的常見問題說明工作表,往後不必再回頭翻找對話紀錄。

另一種常見情況,則是網頁爬蟲或 VBA 抓回來的資料,通常沒辦法一次就整理乾淨。贊贊小屋這次試過兩種方式向 AI 說明資料狀況:一種是直接把 Excel 工作表的畫面截圖貼給 AI,讓 AI 用畫面判斷哪裡多了空白列、哪裡重複;另一種則是把實際執行後的資料內容直接以文字貼上,讓 AI 對照真正的資料本身。從結果來看,提供截圖不一定能讓 AI 完全掌握資料的實際狀況,直接貼上原始資料通常效果更好,但也不代表一次就能完美,仍然可能需要再修正一輪。這種「執行、發現問題、回報給 AI、再修正」的循環,可以持續進行,直到資料真正整理乾淨為止。

Excel VBA 整理資料,AI 還能幫上哪些忙 9

二、先搞懂現金匯率與即期匯率的差別

贊贊小屋先在 ChatGPT 貼上臺灣銀行匯率查詢網頁連結,並輸入「這個網站上有現金與即期匯率,請問這兩者的差別?」。ChatGPT 用一個簡單的表格回覆:「現金匯率」用在買賣「外幣現鈔」,例如拿美金鈔票到銀行,或向銀行購買美金鈔票;「即期匯率」則用在外幣「帳戶」之間的交易,不涉及實體鈔票,而是直接從銀行帳戶扣款、入帳。如果只是想在 Excel 中查詢與整理相關匯率資料,也可以參考之前整理的 台灣銀行匯率Excel

ChatGPT 接著說明另一個容易搞混的地方:「買入」與「賣出」都是站在銀行的角度,不是站在客戶的角度。以美元為例,贊贊小屋若拿美元現鈔給銀行,就是銀行「買入」美元,要看買入匯率 31.450,1,000 美元換算下來是 31,450 元台幣;反過來如果是向銀行購買美元現鈔,就是銀行「賣出」美元,要看賣出匯率 32.120。

把這四個名詞先弄清楚,後面整理 Excel 欄位時才知道「現金買入、現金賣出、即期買入、即期賣出」各自代表什麼,也才能判斷 VBA 抓回來的資料有沒有抓對地方。

先搞懂現金匯率與即期匯率的差別
先搞懂現金匯率與即期匯率的差別 2
先搞懂現金匯率與即期匯率的差別 9

三、把匯率觀念整理成 Excel FAQ 表格

了解四種匯率的差別後,贊贊小屋輸入「你提出的幾點說明很好,幫我做成一個常見問題小表格,方便我複製貼上到 Excel 中」。ChatGPT 隨即把剛才的說明整理成適合直接複製到 Excel 的格式,欄位使用「問題、答案、重點」三欄,並在回覆右上角提供「複製」按鈕。

贊贊小屋直接使用「複製」功能,把整理好的表格貼到 Excel 檔案「匯率檔案.xlsm」新增的 FAQ 工作表中,可以看到每一個問題、答案與重點都依序進入不同欄位,總共十幾列,涵蓋現金匯率、即期匯率、買入賣出方向等常見疑問。

這一節示範的是 AI 用法中很實用的一環:ChatGPT 不只能回答問題,也能先把自然語言說明轉換成結構化資料,直接變成報表裡的一份說明文件,日後回頭查資料時,不必再翻對話紀錄。

把匯率觀念整理成 Excel FAQ 表格
把匯率觀念整理成 Excel FAQ 表格 2
把匯率觀念整理成 Excel FAQ 表格 9

四、原始 VBA 抓到資料,但表格仍不乾淨

回到上一篇建立的匯率 VBA,這其實也是 Excel VBA爬蟲 很典型的後續問題:網頁資料雖然已經抓進 Excel,卻不代表原始結構可以直接拿來分析。

工作表「匯率檔案.xlsm」中已經可以看到美金、港幣、英鎊、澳幣等幣別的匯率資料,「現金買入」「現金賣出」「即期買入」「即期賣出」四個欄位都有取得。不過表格中間仍穿插不少多餘內容:美金列下方接著出現重複的「美金(USD)」列與空白列,港幣、英鎊下方也是同樣情況,右側則另外帶入「遠期匯率」「歷史匯率」等重複的網頁標題欄位。

贊贊小屋沒有重新設計一支新程式,而是直接把這張工作表截圖交給 ChatGPT,並輸入:「我有一個 VBA 程式可以取得匯率,並且放到工作表上。但是你可以看到圖片上的工作表,它的表格是比較沒有規則的。我希望是一般像 Excel 表格那樣以資料為主,不要有空白的地方。可以幫我優化這個 VBA 程式嗎?」,接著貼上原本 Sub 取得臺灣銀行匯率() 的程式名稱與內容,讓 ChatGPT 不是憑空猜測,而是直接從已經可以執行的版本繼續修改。

把實際執行結果的截圖交給 AI,通常比重新描述一大段需求更直接,因為哪裡是空白列、哪裡重複,AI 可以直接從畫面判斷。不過這次的截圖只呈現工作表的其中一部分,AI 能不能完全掌握資料的真實狀況,還要看接下來的執行結果才知道。

原始 VBA 抓到資料,但表格仍不乾淨
原始 VBA 抓到資料,但表格仍不乾淨 2
原始 VBA 抓到資料,但表格仍不乾淨 9

五、ChatGPT 給出乾淨資料表版 VBA

ChatGPT 看過工作表截圖與原始程式後回覆:「我幫你把 VBA 改成『乾淨資料表版』,你原本的程式可以直接改成下面這一版」,並重新輸出優化後的 Sub 取得臺灣銀行匯率(),在回覆右上角提供「複製」按鈕。

贊贊小屋回到 VBA 編輯器,開啟「匯率檔案2.xlsm」底下「模組」中的 Module1,直接將原來程式碼全選,再把 ChatGPT 提供的完整新版程式覆蓋貼上即可,不需要另外建立新的模組,也不用保留舊版程式再多加一支 Sub。

這次不是重新產生一支全新的程式,而是讓 ChatGPT 根據既有程式與執行結果繼續修改;如果還不熟悉從需求開始請 AI 寫程式的完整流程,可以先參考 ChatGPT寫ExcelVBA。保留原本相同的 Sub 名稱,代表工作目的沒有改變,仍然是執行「取得臺灣銀行匯率」,只是程式內部多了一段資料清理的邏輯,後續的執行方式完全不必跟著改變。

ChatGPT 給出乾淨資料表版 VBA
ChatGPT 給出乾淨資料表版 VBA 2
ChatGPT 給出乾淨資料表版 VBA 9

六、第一次修改後仍有多餘資料

執行新版 VBA 後,工作表確實已經比原來整齊,主要欄位集中成「幣別、現金買入、現金賣出、即期買入、即期賣出」,匯率數字也能正常取得。不過仔細查看後,美金列下方仍然出現重複的「美金(USD)」列,港幣列下方也還留著同樣情況,贊贊小屋把這個結果複製下來,準備回報給 ChatGPT。

這次贊贊小屋沒有再貼截圖,而是直接把複製到的實際資料以文字貼上,輸入「還是不行,會有多餘不需要的資料列:」,接著列出目前仍然殘留的幣別、現金買入、現金賣出、即期買入、即期賣出等欄位內容,讓 ChatGPT 直接對照真正的資料本身。

比起提供截圖,直接貼上實際資料的文字內容,能讓 AI 更精準地掌握哪一列是多餘的、哪一欄還沒清乾淨。AI 寫 VBA 跟一般程式開發一樣,很少能期待第一版就完全符合需求,把真正的執行結果當成下一輪的測試資料,往往比重新描述同一個需求更有效率。

第一次修改後仍有多餘資料
第一次修改後仍有多餘資料 2
第一次修改後仍有多餘資料 9

七、再次修正後完成標準匯率資料表

根據第二次的實測結果,ChatGPT 建議直接改成新的一版,並列出這一版會做到的事:自動從臺灣銀行抓資料、自動刪除「美金(USD)」等重複資料、自動刪除空白列、自動刪除「本行買入」「本行賣出」等網頁標題,同時保留「-」符號,例如南非幣、瑞典幣沒有現金匯率時原本顯示的「-」,不會被誤判成空白資料整列刪除,接著附上優化後的完整程式。

贊贊小屋再次把完整程式覆蓋到原本的 VBA 模組後執行,Excel 隨即跳出訊息「臺灣銀行匯率取得完成!已自動排除空白列及重複幣別資料。」,工作表從第一列開始就是欄位名稱,下面依序排列美金、港幣、英鎊、澳幣、加拿大幣、新加坡幣、瑞士法郎、日圓、南非幣、瑞典幣、紐元、泰幣等幣別,每一列對應一種貨幣,中間不再穿插空白列,也沒有重複的幣別名稱。

到這一步,這份資料才真正從「網頁抓取結果」變成一般 Excel 可以直接使用的資料表,後續無論要做篩選、排序、VLOOKUP、XLOOKUP 或樞紐分析,都不必再人工刪除空白列與整理欄位。這次 VBA 是依照臺灣銀行網頁資料的特定結構自動排除空白與重複內容;如果要單獨處理一般工作表中的空行,也可以參考 Excel刪除空白列 的做法。

再次修正後完成標準匯率資料表
再次修正後完成標準匯率資料表 2
再次修正後完成標準匯率資料表 9

資料抓得到,不代表能直接用

贊贊小屋原本以為,VBA 能自動把臺灣銀行匯率抓進 Excel,工作就已經完成:按一次執行,匯率真的會自己跑進工作表,不必再開網站逐筆複製。但這次繼續整理後才發現,「資料抓得到」跟「資料可以直接用」其實是兩件事。網頁有自己的排版方式,Excel 則需要規則明確、一列一筆的資料,如果只是把網站上的表格原樣搬進工作表,很多原本為了網頁閱讀而存在的標題、空白與重複文字,也會一起被搬進來。

這次整理資料的過程也示範了兩種向 AI 求助的方式:先用截圖讓 AI 看到問題所在,再視情況改用文字貼上真正的資料內容,讓 AI 對照真實結果修正程式。這種「執行、發現問題、回報、修正」的循環不必一次到位,只要先完成基本功能,再把真正遇到的狀況交回 AI,一輪一輪修改,最後得到的就不只是一支能執行的 VBA,而是一份真正符合後續工作需要的 Excel 資料表。


學會計、學Excel、學習AI工具,歡迎加入贊贊小屋社群

Claude Code 教學:從安裝到 Excel、PPT 與網頁實戰

Claude Code 教學ChatGPT怎麼用?ChatGPT Excel教學ChatGPT寫ExcelVBAGemini是什麼?Notion教學AI對會計的影響

贊贊小屋AI課程:OpenClaw AI 代理Codex 網站Claude Code 實戰ChatGPT課程AI工具全攻略Notion課程

Claude Code 教學:從安裝到 Excel、PPT 與網頁實戰