如何讓數據說話,是職場必備的技巧!
Excel又是搜集數據的好工具,特別是任職製造業、科技業的朋友,常常都得面對 Excel 函數、樞紐分析、巨集錄製…。別擔心,你不會 Excel VBA巨集是正常的,石頭哥早期也是泡在Excel、Access 資料庫中學好幾年才有現在的功力。
新接一個部門,助理秘書又忙碌或是請假,我也不好意思叫其他廠區的助理秘書幫忙,因此乾脆自己動手做,順道把做的流程一併教導大家吧!
所以今天石頭哥帶你透過ChatGPT 來神救援,幫你把每週都得透過 Excel 資料,彙整成圖表的工作,直接交由 ChatGPT 幫你一次錄製好 Excel VBA巨集,以後只要點選執行,就能幫你讓raw data,轉化為infrmation,方便你開會的時候….言之有物。
案例演練:我有一個 Excel 檔案的週報,我希望你幫我建立一個VBA巨集,幫我分析各廠區領取各類別物料所佔的比例。資料、數據,在sheet1,你製作的巨集產生的資料、圖表要放置在sheet2。
✅需求一、擷取 I欄位,一堆敘述的文字中,有「備料不足」的字眼,計算所佔比例,這是改善重點。
✅需求二、了解當週各廠區各類別領料現狀。
Step 1. 讓 ChatGPT 清楚流程:
你要讓 ChatGPT 扮演平常的你幫你做事,那麼你就要熟悉整個工作流程如何演進,然後把工作流程逐一條列式的告訴 ChatGPT ,它才有辦法幫你產生出你希望它呈現的成果。這就好比你要撰寫 Excel VBA巨集之前,你得熟悉整個流程如何進行,才有辦法錄製得很完整一樣。
Step 2. 條列式下達指令:
於是下達條列式的指令,讓 ChatGPT 知道你的數據範圍,不要用敘述事情的方式。
1. 數據都放置在sheet1頁面的 A欄位到 I欄位
2.各欄位的名稱在第4列,所以數據是從第5列開始
3. 第4列個欄位的名稱為 A4:材料來源;B4:供應商;C4:材料類別;D4:料號;E4:品名;F4:領料編號;G4:建立者;H4:建立日期;I4:領料內容描述
4. 統計I欄位從I5往下計算(包含I5),總共領料件數當作分母。
5. 搜尋I5往下給個欄位(包含I5),欄位內有包含"備料不足"字的有多少件數,當分子。
6.透過上述 4.獲得分母,5.獲得分子,兩者相減成為剩餘件數,用項目5的備料不足與其餘件數,畫出大餅圖呈現"備料不足領料比例。
7. 根據欄位 C5(包含C5),往下計算出各物料類別件數,劃出直條圖分布。
Step 3. 開啟 Excel開發人員選單:
現在我們要做的是:把 Excel檔案裡面一直隱藏的開發人員選單給開啟,才能把上面錄製好的 VBA巨集複製貼到 Excel裡面,讓它可以執行。底下步驟有點冗長,不要擔心!石頭哥有檢視過三次,你沒問題的,照著就可以完成的。
1、開啟一個 Excel檔案,在最上方「功能區」第一個「檔案」索引標籤,點選它,就會帶出一長串選項。
2、在一長串選項的最下方一個「選項」,點選它,就會帶出一個三條列式路線表框
3、看到第一排的「自訂功能區」,點選它,就會看到最右邊呈現「主要索引標籤」。
4、在「主要索引標籤」的倒數第三個應該就會看到「開發人員」,此刻把它給打勾✅,然後最底下右邊的「確定」按鍵,按下去就完成了。
Step 4. 插入 ChatGPT 寫好了VBA模組:
現在我們要做的是:如何把 ChatGPT 產出的 VBA巨集複製貼到 Excel裡面,讓它可以執行。
1、此刻回到 Excel操作介面,在最上方「功能區」最後一個就會冒出「開發人員」索引標籤,請點選它。
2、在最上方最左邊的「程式碼區塊」選項中,你會看到「Visual Basic」,請點選它,開啟Visual Basic 編輯器。
3、這時候會開啟一個表格,左邊有「專案」、「屬性」兩個選項,請點選「專案」選項中的「VBAProject」,將游標停在上面,按下右鍵。
4、在清單選項中,找到「插入」,點選它。
5、在裡面看到「模組」選項,請點選它,就會帶出一個空白的「Module1(程式碼)板塊。
6、把剛剛 ChatGPT 寫好的 VBA巨集貼上去。
7、然後在最上方點選「執行」,Excel就會跑「 AnalyzeData」這個巨集,繪製出你需要的的圖表 (如上圖所示)。
如果你對於這個圖表有不完善的地方,此刻你再進去 Excel VBA編輯器中慢慢修正,或是告訴 ChatGPT 哪邊你希望修正的,它就會如實照辦囉。如何,很方便吧!
工具是要越用才會越上手的,而且 ChatGPT 是個聰明的好工具,透過你不斷的練習,終將會像寶可夢一樣被你給收服了。
加油囉,我的朋友,讓我們一起閒聊、一起分享,一起遇見更棒的自己吧。
附件📎ChatGPT 製作的Excel VBA如下:
Sub AnalyzeData()
Dim LastRow As LongDim COACount As LongDim TotalCount As LongDim ws1 As Worksheet, ws2 As WorksheetDim Chart1 As ChartObject, Chart2 As ChartObjectDim rng As Range, cell As RangeDim MaterialDict As Object' 設定工作表Set ws1 = ThisWorkbook.Sheets("Sheet1")Set ws2 = ThisWorkbook.Sheets("Sheet2")' 計算最後一行LastRow = ws1.Cells(ws1.Rows.Count, "I").End(xlUp).Row' 計算備料不足Count = Application.WorksheetFunction.CountIf(ws1.Range("I5:I" & LastRow), "*備料不足*")' 計算總件數TotalCount = LastRow - 4' 計算備料不足件數比例ws2.Cells(1, 1).Value = "備料不足件數"ws2.Cells(1, 2).Value = "其餘物料件數"ws2.Cells(1, 3).Value = "配料不足”Count / TotalCountws2.Cells(1, 4).Value = "其餘物料"Count / TotalCount' 繪製大餅圖Set Chart1 = ws2.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)Chart1.Chart.SetSourceData Source:=ws2.Range("A1:B1")Chart1.Chart.HasTitle = TrueChart1.Chart.ChartTitle.Text = "備料不足件數比例"Chart1.Chart.ChartType = xlPie' 計算各物料類別件數Set MaterialDict = CreateObject("Scripting.Dictionary")For Each cell In ws1.Range("C5:C" & LastRow)If Not MaterialDict.exists(cell.Value) ThenMaterialDict(cell.Value) = 1ElseMaterialDict(cell.Value) = MaterialDict(cell.Value) + 1End IfNext cell' 輸出到Sheet2Dim i As Integeri = 3For Each key In MaterialDict.keysws2.Cells(i, 1).Value = keyws2.Cells(i, 2).Value = MaterialDict(key)i = i + 1Next key' 繪製直條圖Set Chart2 = ws2.ChartObjects.Add(Left:=500, Width:=375, Top:=50, Height:=225)Set rng = ws2.Range("A3:B" & i - 1)Chart2.Chart.SetSourceData Source:=rngChart2.Chart.HasTitle = TrueChart2.Chart.ChartTitle.Text = "各物料類別件數分布"Chart2.Chart.ChartType = xlColumnClusteredEnd Sub