朱潔蘭

摘 要 介紹使用ExcelVBA工具進行編程,實現企事業單位黨委組織部黨員信息數據分析自動化的過程。設計程序的功能結構,包括年齡、入黨時間、學歷、職稱、入黨積極分子年齡結構分析功能;給出程序的實現過程詳細介紹,從導入數據、清理數據到編碼的思路和實現方法。
關鍵詞 黨員信息統計;ExcelVBA;統計圖表
中圖分類號:TP391.13 文獻標識碼:B
文章編號:1671-489X(2015)14-0052-03
1 前言
在企事業單位黨委組織部每年都要進行固定的黨員信息統計的任務,統計的數據包括所有黨員的工資(用于計算黨費收繳比例)、學歷、職稱等各類人事履歷數據信息。對于這些數據需要按照年齡段、時間段、不同職稱等進行百分比統計。對于黨務管理人員來說,這些常規事務性工作每年都要重復,除了數據源不同外,其他的統計口徑基本固定。為了簡化這一工作,筆者在常用的Office辦公軟件Excel上進行VBA編程,實現黨統數據分析自動化。
2 程序功能結構圖
ExcelVBA就是在Excel軟件中進行編程,編好的自動化功能可以在相應的Excel模板中使用。Office軟件都帶有VBA編程的功能,不需要單獨安裝編譯環境。
整個軟件結構有五項自動化功能,每一個功能都是針對黨員信息中的某一個屬性進行分類計數統計的。
1)黨員年齡結構分析:30歲及以下;31~35歲;36~40歲;41~45歲;46~50歲;51~55歲;56~60歲;61~65歲;66~70歲;71歲及以上。
2)黨員入黨時間結構分析:1949年10月—1966年4月;1966年5月—1976年10月;1976年11月—1978年12月;1979年1月—2002年10月;2002年11月—2012年10月;2012年11月及以后。
3)黨員學歷結構分析:研究生;大學本科;大學專科;中專;高中、中技;初中及以下。
4)黨員職稱結構分析:教授;副教授;講師;其他。
5)入黨積極分子年齡結構分析:30歲及以下;31~
35歲;36~40歲;41~45歲;46~50歲;51~55歲;56~60歲;61~65歲;66~70歲;71歲及以上。
3 程序實現過程
下面說明一下該自動化程序的實現過程。筆者是在Excel 2007環境下完成程序的開發過程的,其中用到的關于Excel數據透視表、Excel圖表的對象代碼,同樣適用于Excel2003及以后的其他版本。
導入數據 首先要在Excel模版中導入企事業單位的黨員信息數據,包含黨員的姓名、性別、民族、出生年月、文化程度、參加工作時間、入黨時間、職稱、職稱評定時間、現任職務等基本信息。這些數據導入到Excel模板的“源數據”工作表中。
整理數據格式 在Excel模板中有些特定的字段需要規范數據格式,如“sheet1”工作表是用來統計入黨時間的,要求在A列復制黨員的入黨時間,B列放入統計的入黨時間節點;根據黨員統計表的格式要求,這兩個字段都統一寫成yyyy.mm的格式。
設計功能結構 在Excel模板的“源數據”工作表中導入黨員基本信息,其他工作表用于實現各項功能。在表1(程序功能結構)中有五個功能,分別用五個工作表來實現。在每一個相應功能的工作表中執行相應的宏代碼即可。
編寫代碼 本Excel模板要編寫五段宏代碼,實現的功能都是根據黨員基本信息的數據自動產生數據統計結果和圖表,它們的程序流程大致相同。程序流程如下:根據用戶選擇的不同的分析類別觸發不同的事件過程;根據不同的分析類別的要求,在后臺進行計算,統計出每一個類別的總人數;按照指定的格式顯示在工作表中;根據統計結果插入相應的統計圖。
4 程序部分代碼展示
以下代碼實現了黨員入黨時間統計的功能,根據所有黨員的入黨時間統計若干個指定的入黨時間節點之間的人數[1],并形成統計結構餅圖。
Sub Macro1()
Range(“G2“).Select
ActiveCell.FormulaR1C1 = “=LEFT(R[0]C[-6],4)+TRUNC
(MID(R[0]C[-6],6,2)/12,3)”
//在G2單元格把A2單元格的入黨時間轉化為數字,年和月信息用小數來表示
Set myRange1 = Worksheets(“Sheet1”).Range(“A1:
A10000”)
answer1 = Application.WorksheetFunction.CountA
(myRange1)
//answer1是入黨人數,A列是所有黨員的入黨時間列表
Selection.AutoFill Destination:=Range(“G2:G” & answer1),
Type:=xlFillDefault
//在G列把所有A列的入黨時間轉化為數字,用自動填充公式的功能實現
//在H列轉換時間斷點B列的日期為數字,年和月信息用小數來表示
Range(”h3”).Select
ActiveCell.FormulaR1C1 = ”=LEFT(R[0]C[-6],4)+TRUNC
(MID(R[0]C[-6],6,2)/12,3)”
Set myRange2 = Worksheets(”Sheet1”).Range(”B1:
B10000”)
answer2 = Application.WorksheetFunction.CountA
(myRange2)
//answer2是時間斷點的個數
answer2 = answer2 + 1
Selection.AutoFill Destination:=Range(”H3:H” & answer2),
Type:=xlFillDefault
//用自動填充公式的功能輸出時間分段標志
Range(“C3“).Select
ActiveCell.FormulaR1C1 = ”=R[1]C[-1]&””~””&RC[-1]”
Selection.AutoFill Destination:=Range(”C3:C” & answer2),
Type:=xlFillDefault
//在C列顯示文字,表示是哪兩個時間節點之間的數據
Range( “C2“ ).Select
ActiveCell.FormulaR1C1 = "=R[1]C[-1]&""以后"""
//在C2單元格顯示文字,最后一個時間節點以后
Range(”C” & answer2).Select
ActiveCell.FormulaR1C1 = "=R[0]C[-1]&""以前"""
//顯示文字,在第一個時間節點以前
//以下代碼統計各時間段的入黨人數
Range(”I2”).Select
ActiveCell.FormulaR1C1 = “=COUNTIF(R2C7:R” &
answer1 & “C7,””>””&R[1]C[-1])”
Selection.AutoFill Destination:=Range(“I2:I” & answer2), Type:=xlFillDefault
Range(“D2”).Select
ActiveCell.FormulaR1C1 = “=RC[5]”
Range(”D3”).Select
ActiveCell.FormulaR1C1 = ”=RC[5]-R[-1]C[5]”
Range(”D3”).Select
Selection.AutoFill Destination:=Range(”D3:D” & answer2),
Type:=xlFillDefault
For Counter = 2 To answer2
Set curCell = Worksheets(“Sheet1”).Cells(Counter, 4)
curCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=
xlNone, SkipBlanks _
:=False, Transpose:=False
If curCell.Value< 0.01 Then curCell.Value = 0
Next Counter
//以下代碼清空中間的計算過程
Columns(”E:I”).Select
Selection.Delete Shift:=xlToLeft
//以下代碼自動插入圖表,形成統計分段時間人數的餅圖
Range(”C1”).Select
Set curCell = Range(ActiveCell, ActiveCell.Offset
(answer2 - 1, 1))
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=curCell
ActiveChart.ChartType = xlPie
End Sub
5 程序效果
對于黨員入黨時間結構分析功能的程序效果,圖1是程序運行結束后計算出來的最終結果;圖2是程序運行過程中的計算得出的中間數據,在程序結束后自動刪除;圖3是根據最終結果自動形成的統計圖。
6 程序的可改進之處
該程序對于黨員信息統計工作人員的好處是:以前要定期完成的黨員信息統計工作現在有一部分可以一鍵完成,只要把“源數據”工作表中的人員信息定期更新,就能得到相應結構分析的結果。筆者認為程序的局限性在于相對于黨員信息統計的整體任務而言,功能還是較少,后續可以繼續擴展[2]。如在分層次的統計中,先分別計算出35歲以下和35歲以上黨員中女性、少數民族黨員的比例,然后合計所有黨員中女性、少數民族黨員的比例。
參考文獻
[1]吳智.基于Excel VBA高校畢業設計文檔快速生成系統的開發[J].電腦知識與技術,2013(2):302-305.
[2]廖明梅,舒清錄.Excel VBA在對口中職招生考試中的應用[J].微型電腦應用,2014(7):58-61.