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