唐娟
摘 要:高職學生紛紛通過考證來提高自己的就業競爭力,學校教學部門需要了解學生的考證情況。本文利用Excel VBA編程,對高職學生考證信息進行歸納和統計,給出了可供參考的功能代碼,為學校提供靈活、準確的考證資料。
關鍵詞:Excel VBA 考證 統計
中圖分類號:TP311 文獻標識碼:A 文章編號:1672-3791(2017)10(a)-0011-02
面對嚴峻的就業形勢,高職學生紛紛通過“考證”來提高自己的就業競爭力,一般來說,高職學生所考的證書分為兩類:一類是與本專業相近的職業資格證書,如電工證、物流師證、育嬰師證等,另一類是公共類證書,如普通話水平證、英語四六級證、計算機等級證等[1]。高職學生考證“熱”,學校教學部門也“熱切”于了解學生的考證情況,如機電專業學生電工證的考證人數和通過人數、所有學生英語四級證的報考人數和通過率等。如果考證的原始成績數據是excel電子表格,基于數量的數據統計只需要通過Excel函數進行匯總和計算即可,但是教學部門往往需要進一步了解的是:具體到每個教學班、每個學生的某個證書是否考過并是否通過。以公共類證書為例,想得到學生考證信息統計表(如圖1所示),只用Excel函數功能無法實現。Microsoft Excel還有一個非常有用且功能強大的工具,即Excel VBA。
VBA是Visual Basic for Applications的縮寫,是內嵌于office軟件中的一個開發模塊,這個模塊提供程序自主開發,語言基礎和VB(Visual Basic)相似,通過VB的編程完成需要的功能。
1 Excel中VBA編程和執行步驟
以Excel2010為例,VBA編程和執行程序的步驟如下[2]。
(1)點擊“開發工具→Visual Basic編輯器”命令,進入“Visual Basic編輯器”窗口。
在左側“工程資源管理器”窗口中,選中保存宏的工作簿,然后執行“插入模塊”命令,插入一個新模塊(模塊1)。
(2)將相關宏代碼輸入或復制、粘貼到右側的編輯窗口中。注意:宏的結構是:
Sub 宏名稱()
VBA代碼
End Sub
輸入完成后,關閉“Visual Basic編輯器”窗口返回即可。
(3)執行該程序,可以點擊“開發工具→宏”,選擇相應的宏名即可。
2 考證統計的VBA代碼編寫
本文以計算機等級考試考證情況統計為例,給出實現過程。
首先打開一個工作薄,將歷次計算機等級考試成績全部拷貝到sheet1中,至少包含準考證號、姓名、身份證號、成績四列,如圖2所示。計算機等級考試準考證號最左邊兩位代表考試科目,圖2中“15”為計算機等級考試一級科目之一,“24”和“29”為計算機等級考試二級科目。
然后,需要了解哪些學生的考證情況,就將這些學生的姓名、身份證號等信息放到sheet2表中,如圖3所示。
再進行編程前的分析:為方便日后數值的匯總,圖3中計算機一級和計算機二級兩列的值,可以用“1”代表成績合格,“0”代表成績不合格,“-1”代表未參加過考試。程序邏輯為:將計算機一級和計算機二級列中狀態值全部預設為“-1”,代表該科目未參加過考試。順次取sheet2中的各行身份證號遍歷sheet1成績表,如sheet1中找到相同身份證號的記錄,則判斷相應的準考證號最左邊兩位代表的是一級還是二級,若該行記錄中的成績為及格,則將sheet2中相應級別下單元格的值置為1;如不及格,須判斷該單元格內是否有為1的值,若不為1,則置為0。
程序邏輯分析完畢,按本文前述方法,為工作簿sheet2,插入一個VBA模塊。該模塊的主要代碼如下:
For i = 2 To UBound(arr) ‘arr為sheet2數據區域
ls_identity_id = Sheet2.Range("c1").Rows(i).Value
For j = 2 To UBound(crr) ‘crr為sheet1數據區域
If Sheet1.Range("c1").Rows(j).Value = ls_identity_id Then
If Left(Sheet1.Cells(j, "a"), 2) = 15 Then
If Sheet2.Cells(i, "e").Value <= 0 Then
If Sheet1.Cells(j, "d") < 60 Then Sheet2.Cells(i, "e").Value = 0
Else Sheet2.Cells(i, "d").Value = 1
End If
End If
Else
If Sheet2.Cells(i, "f").Value <= 0 Then
If Sheet1.Cells(j, "d") < 60 Then Sheet2.Cells(i, "f").Value = 0
Else Sheet2.Cells(i, "e").Value = 1
End If
End If
End If
End If
Next
Next
執行以上程序,得到如下結果,如圖4所示。
英語四六級等其它科目的考證信息統計可參考以上方法,不再贅述。有了圖4的結果,如想匯總某個證書獲證人數,可累加相應列中所有為“1”的值,匯總未參加考證的人數,可累加為“-1”的值。另外,根據實際需要,可以將數字“1”“-1”“0”整體替換為有實際意義的漢字,圖1即為替換后的效果。
本文利用VBA編程歸納、統計高職學生考證信息,為學校教學部門提供了準確詳細的資料,給出的功能代碼,可供學校教學管理人員參考使用。
參考文獻
[1] 曹志英.高職學生考證熱現象的分析與思考[J].青年與社會:上,2015(5):162.
[2] 李曉玫,楊小平.Excel中的VBA程序設計[J].四川師范大學學報:自然科學版,2004(4):423-426.endprint