Excel VBA 實戰(1)

1. 開闢專欄的初衷

1.1 一些想法

知乎上關於Excel的教程可謂是恆河沙數,其中不缺乏一些財務、金融、數據分析等領域的大牛的經驗分享。作為一名長期涉足於財務自動化的財務從業者,長久以來我一直想開闢一個專欄,與大家分享交流自己財務實踐中的經驗與見解。

對於普通財務而言,電腦上未必配備有Java或是Python的運行以及開發環境,poi以及pandas對僅有Excel操作經驗的財務人員顯然不是太友好。但是MS Excel以及瀏覽器則無疑是財務人員workstation的標配。因此,本專欄以Excel VBA以及Javascript為基本編程語言,從實踐案例出發,力求給讀者展現財務自動化的真正魅力。本專欄所有案例都源自於本人工作實踐,所有代碼均系本人實際工程中使用代碼改編。本人代碼絕非最優解,權當拋磚引玉,為大家解決實際問題提供一個新的角度。

1.2 關於本人

本人非CS科班出身,編程知識都是在實踐項目中自學(主要是通過閱讀教程以及請教IT從業的朋友),所以深知財務自動化的必要。從2012年開始,累積VBA項目代碼超過10萬行。同時,也參與過d3js數據可視化的諸多項目。

附上本人Github地址(私人),其中收錄了一些本人業餘的玩具項目。遠遠達不到IT行業Documentation以及Test Coverage的標準,還請編程大牛手下留情。

2. 前置要求

由於所有項目皆出自於實踐,因此要求對VBA基本語法以及Excel重要的對象模型有基本的了解,部分列舉如下,

  • 選擇(if)、循環(do while, for, for each)
  • Sub 和 Function 區別,ByRef, Optional 關鍵字,變數聲明,基本類型
  • 字元串、日期處理函數
  • 錯誤&異常處理
  • 面向對象基本模式
  • Workbook, Worksheet, Range對象基本屬性和方法
  • FileSystemObject, RegExp, Dictionary 模塊基本方法, Array 相關方法

根據讀者反饋,如有必要,以後可以對於相關知識點進行適當介紹。

3. Excel VBA 案例1

3.1 問題描述

求和並分組

*將各科目下的子科目求和並分組, 如 C2中的公式應為 "=SUM(C3:C5)",並將3至5行合併為一組。

* 要求各項下子科目按名稱升序排序 即R2, R3, R1排列成R1, R2, R3

*總行數未知,即12行以下可能還有其他科目以及子科目

*要求寫出通用方法, 函數名為 GroupAndSum, 參數自定

* 最後效果如下

示例表格下載地址

qiou.eu/xl/Case1.xlsx

為了項目效果,請務必親手試驗。參考代碼一周後提供。


推薦閱讀:

【Excel VBA】- 使用CDO批量發送郵件(二)
【VBA初學者教程】- 第二章 了解對象、屬性、方法和事件:理論知識
Excel VBA 實戰(3)
你為什麼覺得Excel VBA有點難?

TAG:MicrosoftExcel | VBA | 财务 |