ChatGPT改寫指令:3種提問語與VBA程式除錯

ChatGPT改寫指令是使用這項新工具的技巧之一,本文以生成自動化代碼為例,介紹3種不同提問語,透過往來對話,讓AI助理自己VBA程式除錯,得到最終產出。

一、報表格式調整

範例是應付帳款明細表,其中的F2到F11是「本幣金額」欄位,想要針對這個範圍進行格式調整,希望以VBA程式方式進行。在不知道怎麼寫程式的情況下,以往可以透過錄製巨集實現,但現在ChatGPT已經非常方便了,很多時候可以取代錄製巨集的功能,接下來準備以AI問答得到想要的VBA程式碼。

這裡的操作非常簡單,可能會覺得直接手工操作就好了,但其實這是一整個報表編製中間的小環節,例如說調整格式之後,要再檢查是否有負數應付帳款的異常情形。而且不管是教學或者工作,最好能夠將想要執行的任務拆成細項,分成幾個小任務個別進行。尤其在不是很了解VBA的情況下,就好像設計Excel公式,沒有辦法一次到位,那就先一小段一小段的設計公式的方式再組合起來,這也是贊贊小屋Excel課程教學常用方法。

一、報表格式調整

二、3種提問語比較

瞭解了資料跟需求之後,開始提問:

「Excel儲存格F2到F11範圍中,將數值格式取仟分位整數,如何設計VBA程式?」

可能讀者習慣的說法跟贊贊小屋不一樣,這裡都可以先來看一下ChatGPT的用語,從它的回答中瞭解AI的想法是什麼。贊贊小屋是「將數值格式取仟分位整數」,而ChatGPT程式碼標題是「設定千分位整數格式」,好像更加順口,直接把人字旁的「仟」改成了單純的「千」,所以也許下次我再提問不會加上人字旁了,用比較接近ChatGPT的講法:「設定千分位整數格式」。

總結起來,口語表達、Excel術語、ChatGPT用語三種模式,最終以ChatGPT為準,本來學習AI就是學習如何跟AI助理溝通,儘量用機器人的話跟機器人講。

另外,依照ChatGPT是什麼的觀念,它本來就是收集網路上的大量資料進行統計整合,依照八九不離十的概然律計算,給出結果產生回答,既然ChatGPT這麼講了,可能大部分人就是這麼說的。

二、3種提問語比較

三、AI進階補充說明

除了類似於報告正文的程式碼之外,ChatGPT有提供這裡所看到的補充說明和進階用法。

文章目的是希望ChatGPT幫我設計程式,老實說這裡的說明跟進階不一定需要,就是程式經驗不足,所以要ChatGPT幫忙寫,大概看一下就好了﹐能看得懂當然很好,看不懂至少要能略知其意思﹐有時候可能還是會用到。

例如提到四捨五入是用Round函數,蠻多人都有使用過Excel同名函數,這裡可以看到VBA是完全一模一樣的用法。不過這只是湊巧,Excel有函數,VBA也有函數,兩者是不同的領域,只是有少部份像這裡的Round剛好完全相同。

另外有個進階用法是「同時四捨五入+千分位格式」,最後還有個「自動觸發格式」,雖然ChatGPT想說明VBA自動化的立意良好,但我這裡目的是要依照我的需求讓AI寫程式,不是要廣泛學習,因此這個衍生範例暫時不考慮,只要知道有這個進階用法即可,而至少從標題應該容易可以理解其作用。

三、AI進階補充說明

四、動態偵測範圍

初步熟悉AI幫忙設計程式的流程,以及AI可能會有的回答之後,接下來真正進入文章主題,提問如下:

「我的報表資料筆數不一定,想要不管有多少筆資料,都要將F欄範圍設定千分位整數格式,用VBA怎麼做?」

此提問是實務上常見需求,文章一開始的報表是固定格式固定範圍,在這種情況下要去調整格式設定,不管手工操作、錄製巨集、詢問AI,都是非常容易。然而實際狀況是每個月系統導出來的報表,結構相同但是資料筆數不一樣,有時候100筆、有時候120筆。

除了每個月之外,還有可能是累積的。例如現在是一到五月,到了下個月是一到六月,如此資料型態是會變動的,每次不一樣,那麼針對這種不固定報表該如何設計程式呢?

和先前步驟相同做法,還是先以自己慣用語言提出問題,從ChatGPT回答大概了解到了AI的講法,或者說是大部分人的講法,原來可以用「動態偵測範圍」這個詞語,似乎比贊贊小屋原本的「動態範圍」更為周全。

另外贊贊小屋的提問中,花了兩三個句子試圖描述動態範圍,ChatGPT指令生成器回答程式設計需求時,一開始都會先陳述即將要做的事情,它說的是「整個F欄有資料的部份」,兩相比較顯然也是AI的陳述比較精簡扼要,而且有說到重點。

四、動態偵測範圍

五、瞭解AI程式

確認AI有了解到我的需求之後,接下來實際看AI所設計的程式。

在先前問答的基礎上,已經初步知道在設計這一類操作的自動化時,AI大概會使用什麼樣的程式碼。因此這裡很快察覺到了不太對勁。

它是把資料先做四捨五入再取千分位調整格式,也就是它認為我取整數的用意是想要四捨五入,但其實我是打算保留原始數值,只是希望在報表以整數格式呈現出來。例如12.4呈現為12,12.5呈現為13,但報表內的資料仍然是12.4和12.5。一方面報表資料可能是原始的交易紀錄,通常必須保留。另一方面資料後續可能再做加減乘除,把小數去掉了,會造成些微的計算差異,這個在例如開立發票和往來對帳是會有問題的,像這種實務狀況都是贊贊小屋VBA課程中會特別注意並以適當範例講解的。

五、瞭解AI程式1
五、瞭解AI程式2

六、ChatGPT改寫指令

程式寫錯了,其實也沒有關係,讓AI寫程式的好處是當知道它寫錯了,只要再清楚說明原因,請其修正即可,這也是ChatGPT提問技巧之一,所以進一步提問:

「請不要四捨五入成整數,這會改變值,我要保留原來的值,改變格式就好了。」

贊贊小屋在此仍然說的囉唆一點,從AI回答得到換句話說的講法:「保留原本的數值,只改變格式成千分位整數外觀」,另外它也有以「12345.67」舉例說明,最後還有比較Excel專門術語的陳述:「不改變原始資料的精確度」。

最後總結提問經驗,「保留原來數值,只改變格式」,這樣AI應該就聽得懂了。此外,雖然可以事後再修改,但其實在一開始已經知道ChatGPT有提出進階用法,也許該提早先跟它說不用了,打個預防針。還有它一直會提出是否設計工作表事件,如果事先大概知道這次對話會來來回回修改,同樣最好一開始就跟它說不用再提,畢竟提問也是要花時間的,時間就是金錢。

ChatGPT改寫指令:3種提問語與VBA程式除錯

七、VBA程式除錯

經過幾次問答,確認這位會寫程式的AI助理已經設計好了代碼,也再三追問修改好了,VBA程式除錯成功,如此算是一次完整的ChatGPT問題範例,最後把產出複製到VBA,程式碼本來就只是文字,簡單複製貼上即可。

重點是要大概了解VBA編輯器的操作介面,包括先插入模組、把程式貼在模組文件上,最後可以在上方工具列將「執行」下拉,有個「執行」程式的指令,或者是滑鼠游標在程式碼任何地方點一下,就可以以F5快捷鍵執行程式。

七、VBA程式除錯

八、測試執行結果

執行測試果然沒有問題,修改了F欄的資料格式。細心的話也可以檢查報表,看看到底程式有沒有四捨五入。可以從兩個角度考慮,首先是在跟AI對話的過程中,這部分已經再三確認,應該沒有問題。再者,真的看不懂程式碼,可能就要親自測試。如果是有一點VBA基礎,或者透過ChatGPT使用攻略的對話過程瞭解了四捨五入的程式語法,那麼程式正確,執行起來不會有問題。

剛開始第一步驟的報表是有十筆資料,這裡是有八筆,文章範例本來就是想要動態偵測範圍,這裡故意將資料少了兩筆,執行結果符合期待,果然是會在F欄有資料的範圍調整格式。哈哈,贊贊小屋已經現學現用,直接改用ChatGPT口吻說話寫文章了。

八、測試執行結果

ChatGPT AI學習過程

這篇文章透過ChatGPT怎麼用的再三對話,最後得到想要的結果。贊贊小屋用意是分享如何透過AI助理瞭解VBA設計,是學習的過程,不是工作的過程。

在工作上,說我會AI設計程式,卻是像這樣來來回回反複追問,自己可能覺得會用AI了,老闆有可能認為中間是沒有產出的時間消耗,等於是說我先Google一下好了同樣的道理。況且比較沒有VBA程式基礎的話,有可能真的看不懂程式碼,不太能確認是否有問題,只能小心翼翼的測試。但如果真的出差錯,工作上是不能夠容忍的,你可以問AI,但不能要AI為你負責。這大概是為何ChatGPT的提問框下方,好像都會有一行小字的緣故:「ChatGPT可能會發生錯誤。請查核重要資訊。」

贊贊小屋的新課程:會計人的AI小教室,規劃以多年Excel工作和VBA教學經驗,會在像這這篇文章的提問技巧基礎上,進一步幫助學員建立Excel VBA基本觀念,再透過各種實戰案例,分享如何利用ChatGPT於工作產出中,讓你的AI學習之旅更有效率,不會在問答問答之間,消耗了沒有吸收或者沒有產出的時間。


歡迎報名贊贊小屋ChatGPT課程

ChatGPT課程:職場工作者必須掌握第1名熱門工具

最新文章: