上萬筆資料 key-in 一次搞定:必學的報表輸入秘訣以及 Excel 自動化案例

【我們為什麼挑選這本書】Excel 的功能強大到難以想像,除了比較誇張地拿來畫畫之外,各種「函數功能」也十分強大(該不會你只會用加總 sum 吧?)。

不過,其實更進階的用法,則是 Excel 能夠透過簡單的程式編寫(真的沒有很難),達到自動化的效果。

我們特地精選了兩個小方法:一是「只要輸入一次」即可的大量資料輸入、二則是「沒存檔前都會阻止你關閉檔案」的小程式。如果你也是終日與 Excel 為伍的工作者,這些小祕技真的要好好學起來啊!(責任編輯:陳君毅)

一、只要輸入「一次」就解決的大量輸入作業

利用 Excel 所完成的東西絶大部分是「表格」,因此為了活用 Excel 的自動化作業,必須要先說明建立表格最基礎的「對儲存格輸入」處理的撰寫方式。

我們看看某個公司的實例,範例中是將資料加工進行 Excel 作業自動化。每天需要進行的作業是,將自網站下載的 CSV 檔案資料貼上在固定的工作表中進行加工作業。在這裡看到的是被貼上之後的狀態。

在「資料加工」工作表中貼上資料。另外,雖然在本畫面中無法確認,但有另一個「主表」工作表輸入有分公司名稱。

資料是從 A 欄到 E 欄共 5 欄,接著要進行的作業內容是「在此工作表中 F 欄到 H 欄的 3 欄中,輸入新的資料」。輸入的內容如下所示。

  1. F 欄的儲存格中,輸入 A 欄儲存格自左開始的 4 個文字。
  2. G 欄的儲存格中,將 B 欄的零售店縣名利用 VLOOKUP 函數轉變為分公司名後輸入。
  3. H 欄的儲存格中,若 E 欄銷售金額大於 50 萬則輸入 A,若無則輸入 B。

這些作業看似很負責地做,其實只要進行 1 次就可以完美解決。

  1.  在 F 2 儲存格輸入如下的函數公式。=LEFT(A2,4)
  2.  在 G 2 儲存格輸入如下的函數公式。=VLOOKUP(B2, 主表!A:B,2,0)
  3.  在 H 2 儲存格輸入如下的函數公式。=IF(E2>=500000,"A","B")

選取 F2 儲存格到 H2 儲存格, 將資料拖曳複製到最下方。

如此就完成了作業。只要這樣執行一次,就不用特意執行自動化等手動操作。但是, 若是要固定時間操作一次,且要反覆好幾次操作的話——例如,對 10 個工作表進行重複操作,而且每天都要進行的話,那麼還是利用自動化會比較方便,可以大幅度縮短工作時間。

從「防止作業錯誤」的觀點來看,自動化也是個重點

如果有像這樣的作業的話,可以透過如下的程序,設定自動化。

看不懂沒有關係,你可以從概念上來理解:

「程序是寫在 With⋯⋯End With 之間,開頭有加上句點 (.) 的 Cells 是利用『資料新增』工作表的儲存格⋯⋯」

「反覆處理從 For 到 Next 間的處理。這個反覆的處理是⋯⋯」

「首先,因為是在第 6 欄的 F 欄的儲存格⋯⋯利用 Left 函數,從 A 欄儲存格左側開始擷取文字並輸入⋯⋯」

「接著,因為是在第 7 欄的 G 欄的儲存格⋯⋯利用 VLookup 函數輸入某個值。把 B 欄儲存格當做檢索值,參照『主表』工作表中 A:B 的 2 欄⋯⋯」

「是以 If Then 語法當條件分歧⋯⋯第 5 欄⋯⋯也就是 E 欄的值若是 50 萬以上的話,第 8 欄⋯⋯也就是 H 欄儲存格放入 A,如果不是就輸入 B」

「也就是,將 F、G、H 欄的資料輸入,從第 2 列開始反覆到 A 欄資料的最終行⋯⋯」

二、沒存檔前都不讓你關閉的自動化程式

Excel 也能夠製作像是「開啟檔案」或「關閉檔案」、「選取工作表」等自動動作的操作程序。例如,要進行以下這些動作都是有可能的。

  1. 關閉活頁簿時,若無儲存時就自動儲存。
  2. 只要開啟活頁簿就讓巨集執行。
  3. 只要選取工作表就讓巨集執行。

這些處理我們稱為「事件處理」。

到目前為止,我們都是針對「啟動 VBE 後的程序,接著新增標準模組的操作」進行說明。本章的主題是「事件處理」,也就是會要教導各位製作在進行某個操作的時機點時,會自動動作的程序。

首先,來看看在沒有儲存到檔案時就會自動進行檔案儲存的事件處理。在這個情況下,設定當活頁簿關閉時就會自動執行程序的執行。這個是在 ThisWorkbook 模組中,製作如下的程序。

1. 在專案總管,按二下 ThisWorkbook 模組的圖示。

2. 從「物件方塊」中選取「Workbook」。

3. 忽略已建立的程式,從「程序方塊」中選取「BeforeClose」。

4. Workbook_BeforeClose⋯⋯,也就完成了當活頁簿關閉時就執行動作的程序。

若完成到這一個步驟,就可以把 Workbook_Open 的程序刪除。

例如,想要在沒有進行儲存的狀態下關閉活頁簿時就自動地執行儲存後關閉的話, 就要如下使用 If Then 句法。這是「若無儲存活頁簿就進行儲存」的處理。

只要事先將此程序建立在 ThisWorkbook 模組中,就可以防止不小心沒儲存到而關閉檔案的慘事發生。

——

(本文書摘內容出自《菁英都是巨集控的 Excel 自動化秘密》,博碩文化授權轉載,並同意 TechOrange 編寫導讀與修訂標題。圖片來源:Wiki, CC Licensed。)

延伸閱讀

Google 工程師手把手教學!用 Arduino 和 TensorFlow 自組圖像識別小汽車

11 歲小男孩手把手教你:怎麼自學 Coding,寫出第一款遊戲?

【提升簡報力】UI 設計師親身示範:手把手從概念到設計教你做簡報

點關鍵字看更多相關文章: