最怕週五下午的Excel需求

高效
Join to follow...
Follow/Unfollow Writer: 高效
By following, you’ll receive notifications when this author publishes new articles.
Don't wait! Sign up to follow this writer.
WriterShelf is a privacy-oriented writing platform. Unleash the power of your voice. It's free!
Sign up. Join WriterShelf now! Already a member. Login to WriterShelf.
喜歡嘗試
16   0  
·
2024/12/02
·
4 mins read


最怕週五下午的EXCEL需求

每到週五下午,辦公室裡的氣氛總是變得緊張起來。小琳坐在電腦前,眉頭緊皺,眼睛盯著滿屏的 Excel 表格。她的手指快速地滑動滑鼠,忙著整理銷售數據並生成每個月的計算報表。
「怎麼樣?」鄰座的 Eric隨口問道。
「不怎麼樣啊,每週五下午都像打仗一樣。」小琳頭也不抬,繼續忙著手上的工作。她頓了頓,抱怨道:「這些數據得一筆筆加總,格式還要調整得一模一樣,光做完這些就得花掉一整個下午的時間。」
Eric聽了笑了笑,靠過來低聲說:「其實這些事情可以用自動化工具來做,你不用每週都這麼累。」
「自動化?」小琳疑惑地看著他,「是要寫程式那種嗎?我可不懂那些東西。」
Eric拍了拍她的肩膀說:「不用擔心,今天我就教你一個簡單的方法,讓你的報表在幾分鐘內搞定,保證不用加班!」

步驟一:錄製巨集,記錄重複操作
Eric坐到小琳的座位旁,開始一步步指導她。「首先,我們來錄製一個巨集,把你平時的操作步驟記錄下來。」
他點擊 Excel 的功能列:「檢視 → 巨集 → 錄製巨集」,並輸入一個名稱「自動月報表」,按下確定。
接下來,Eric示範如何完成小琳平時的操作步驟:

1. 格式/格式化為表格。
2. 選擇任一表格格式。
3. 表格設計/勾選合計列。
4. 銷售量欄位,按合計列的下拉式選單,選擇加總。
5. 金額欄位,按合計列的下拉式選單,選擇加總。
6. 銷售員欄位,按合計列的下拉式選單,選擇計數(資料筆數)。
最後,Eric停下來點擊「檢視 → 巨集 → 停止錄製」,他微笑著說:「好了,現在你的操作已經被記錄成巨集了。」

步驟二:檢查並修改巨集程式碼
「但巨集有時候不夠靈活,我們需要檢查一下程式碼。」Eric點擊「檢視 → 巨集 → 檢視巨集」,選擇剛剛錄製的「自動月報表」,並按下編輯,打開 VBA 編輯器。
小琳看到了一串程式碼:

Sub 自動月報表()
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$G$101"), , xlYes).Name = "表格1"
    Range("表格1[#All]").Select
    ActiveSheet.ListObjects("表格1").TableStyle = "TableStyleMedium9"
    ActiveSheet.ListObjects("表格1").ShowTotals = True
    Range("表格1[[#Totals],[銷售量]]").Select
    ActiveSheet.ListObjects("表格1").ListColumns("銷售量").TotalsCalculation = _
        xlTotalsCalculationSum
    Range("表格1[[#Totals],[金額]]").Select
    ActiveSheet.ListObjects("表格1").ListColumns("金額").TotalsCalculation = _
        xlTotalsCalculationSum
    Range("表格1[[#Totals],[銷售員]]").Select
    ActiveSheet.ListObjects("表格1").ListColumns("銷售員").TotalsCalculation = _
        xlTotalsCalculationCount
    ActiveWindow.ScrollColumn = 2
End Sub

Eric解釋道:「這段程式碼是自動生成的,像 Range("$A$1:$G$101") 是固定範圍,但如果你的數據筆數每個月都不同,就需要做些修改,讓範圍可以動態變化。」
接著,他在程式碼的開頭新增下列Excel VBA 語法:

lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row

這是用來偵測 A 欄位最後一列的列號。

繼續調整下列程式碼:

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$G$101"), , xlYes).Name = "表格1"
改為
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$G$" & lastRow), , xlYes).Name = "表格1"

「妳看,現在這段程式碼會自動偵測最後一筆資料的位置,不管數據有多少都能適用。」

步驟三:存檔與執行巨集
Eric提醒小琳:「巨集需要存成啟用巨集活頁簿(*.xlsm)格式,才能保留這些程式碼。」
存檔完成後,Eric指導小琳如何執行巨集:「下次只要同時開啟原始報表與有巨集的檔案,在原始報表中點擊檢視 → 巨集 → 執行自動月報表,就可以一鍵完成所有操作。」
小琳試了一遍,看到原本要花許久時間重複的工作在幾秒鐘內完成,驚喜地說:「天哪,這也太神奇了吧!」
當天,小琳早早收拾好桌子準時下班。臨走前,她笑著對 Eric 說:「謝謝你,這次真的救了我一命!以後遇到難題還要繼續麻煩你。」
Eric擺擺手,說:「別客氣,以後有空多學學 VBA,就不用總是找我幫忙了。」話音剛落,他又補了一句:「下次加班的咖啡我可就不幫你準備了!」
小琳笑著轉身離開,心中卻默默記下了這位「救援專家」的好意。

<更多倍增ExcelVBA自動化超能力技巧>


WriterShelf™ is a unique multiple pen name blogging and forum platform. Protect relationships and your privacy. Take your writing in new directions. ** Join WriterShelf**
WriterShelf™ is an open writing platform. The views, information and opinions in this article are those of the author.




Share this article:
About the Author

討厭繁瑣與重複的工作




Join the discussion now!
Don't wait! Sign up to join the discussion.
WriterShelf is a privacy-oriented writing platform. Unleash the power of your voice. It's free!
Sign up. Join WriterShelf now! Already a member. Login to WriterShelf.