ChatGPT寫Excel巨集:2個程式合併的大絕招

ChatGPT寫Excel巨集可用在很多地方,本文以資料整理和異常檢查為例,介紹如何透過ChatGPT完成這兩項任務,最後說明將2個程式合併的大絕招,自動化會更有效率。

一、製造生產日報表

範例是一份生產日報表,有三條產線,紀錄每天的良品數跟不良品數。出於報表美觀或者系統報表本身如此,在每一天之間都有個空白間隔,這部分雖然可以讓表格清晰,但可能會造成資料處理的麻煩,不管是篩選、排序或者是產生樞紐分析表,都不太方便。

這裡是三個線別,實務上可能是很多個、十幾個線別或者是不同機台。另外目前是一到十日,通常會是每個月每天都有的生產資料,所以後續還會有11、12、13、一直到月底,這些情況依照接下來要設計的ChatGPT指令生成器,都是可以適用的。

一、製造生產日報表

二、ChatGPT提問

想要刪除報表中的空白列,除了最辛苦的一列一列手工刪除,或者利用指令工具快速操作,其實還可以設計VBA自動化程式。新手可能不知道如何設計,此時可以向ChatGPT提問如下:

「Excel表格從第3列開始,有些是空白列,VBA如何刪除?」

其實第一列第二列並沒有空白列,並沒有需要特別提出來,為了謹慎起見,仍然希望從第三列開始。這剛好也是做個參考,如果報表結構更複雜的話,向AI的提問詞就要更加注意,才能精準得到想要的程式。

二、ChatGPT提問

三、ChatGPT寫Excel巨集

首先說明ChatGPT寫Excel巨集的方法:向AI提出需求、複製程式到VBA編輯器、適當修改代碼、執行Sub程序,如此就可以完成一套具體的自動化專案。

依照這個方法,將上個步驟的程式碼貼到VBA編輯器,稍微檢視內容。首先,目前是預設資料在「工作表1」,如果有需要在其他工作表執行,可以直接更改工作表名稱,例如將「工作表1」改成「工作表2」。

仔細看ChatGPT寫程式的內容,程序中間有提到:「從最後一列往上檢查」,因為Excel刪除一整列的時候,預設會將整個工作表的資料由下往上遞補,所以如果由上往下執行,假設刪除了第三列,下面原本的第四列會遞補上來成為第三列,而依照原本的順序是再執行第四列的檢查,其實會是原本的第5列,這樣原始資料裡的第四列就會被略過,因此一定要設定為由下往上執行。這部分也許一開始會覺得奇怪,可以試看看自己在Excel刪除一整列資料,應該有更為具體的瞭解。

沒問題的話,在上方工具列將「執行」下拉,選擇其中的「執行Sub或UserForm」,或者使用快速鍵「F5」。

ChatGPT寫Excel巨集:2個程式合併的大絕招

四、程式刪除空白列

回到Excel工作表,果然執行之後空白列都已經被刪除了,大致對比執行前跟執行後,沒有問題。況且這裡特地將原來的「工作表1」做了備份,將它複製成為「工作表2」,方便進行前後的對照。

報表整理好之後,目前的表格資料分成「良品數」跟「不良品數」,假設管理需求是希望將不良品數中比較異常的項目進行標記,接下來同樣借助AI程式設計的方式完成。

四、程式刪除空白列

五、多欄資料檢查

針對上個步驟提到的不良品數狀況,稍微考慮ChatGPT問問題技巧的遣詞用字,具體提示詞如下:

「Excel表格從第3列開始,想要針對第3、5、7欄的資料,大於50標記黃色,VBA如何設計?」

此處VBA程式碼用了雙重控制流程的用法,除了常見的For…Next迴圈裡有If判斷語句,其實在相同的控制流程中可以再加一層,例如在For迴圈裡面再加一個For迴圈,或者在If判斷語句裡面再嵌套一個If判斷。

另外這裡還用到了For…Next的進階形式,它同時搭配了陣列函數:「Array(3, 5, 7)」,所以這個範例程式是很好的控制流程語句,對於初學者也許過於複雜,在此只要先有個基本概念:控制流程就像Excel函數一樣,可以組合設計,才能完成複雜任務的需求。

五、多欄資料檢查

六、VBA Sub程序

依照先前第三步驟的方法,在此將上個步驟的程式代碼貼到VBA編輯器,目前模組裡面有兩個小程序了,兩相比較,更加瞭解Sub程序的結構,它是以Sub開頭,接著是程序名稱:「刪除第3列以後空白列」跟「標記大於50為黃色」,然後是左右括號,之後下一行便是開始一行一行的程式碼,最後以「End Sub」結束。

像這樣清楚認識Sub結構是蠻重要的,它是程式基本單位,所以也是基礎學習必須具備的知識點,尤其是現在VBA AI生成雖然很方便,但是能多一些理論概念,操作起來會更加順利。

六、VBA Sub程序

七、異常項目標記

執行程式之後,果然看到在工作表中特定欄位有些變化,只要數值大於50都被填滿黃色,也就是生產日報表中異常的不良品產量都標記了顏色,ChatGPT真的幫我寫好一個自動化小程式了。

七、異常項目標記

八、ChatGPT寫程式

文章目前兩個程式範例都是在同一個工作表,先刪除空白列,再標記異常項目。手工操作的話,是先做第一項再做第二項,自動化執行程式也是同樣順序。

於是就會想,是否可以把這兩個程式合併起來一次執行,豈不是更有效率,於是同樣詢問AI,希望讓ChatGPT Excel自動化的專案更為完善。

八、ChatGPT寫程式

九、程式合併執行

接下來準備測試程式執行的結果,這裡的「工作表2」是先前第一步驟備份的資料,執行之後,果然刪除了空白列,而且也標示了異常項目。

注意到這裡為了慎重起見,仍然又備份了一份原始資料的工作表3。之所以如此慎重,是因為如果在Excel操作有誤,通常可以用快速鍵Ctrl+Z復原到上一個階段,資料就可以回復。但是VBA程式執行是沒有辦法復原的,所以不管是自己設計的程式,或者是AI提供的程代碼,執行之前最好都養成備份習慣,不但方便檢查,也是避免發生遺憾。這也是為什麼提問AI很方便,但有時候把ChatGPT檔案下載起來,當作是備份筆記會更好的同樣思惟,因為有可能每次提問都得到不同的答案。

九、程式合併執行

VBA程式合併技巧

這篇文章除了稍微有點複雜的程式碼內容之外,主要是介紹如何將程式合併,這裡是直接交由ChatGPT設計。不過其實在VBA入門教學中,因應不同場合還有其他合併方法。以後有適當的範例時再和讀者分享。


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

AI工具大全:8種不同功能用途和30個應用清單

ChatGPT怎麼用?Gemini是什麼?Notion教學

贊贊小屋AI課程:ChatGPT課程AI工具全攻略Notion課程

AI工具大全:8種不同功能用途和30個應用清單

最新文章: