曾洋
(重慶大學 計算機學院,重慶 400030;重慶電子工程職業(yè)學院,重慶401331)
EXCEL VBA在數(shù)據(jù)表處理中的應用
曾洋
(重慶大學 計算機學院,重慶 400030;重慶電子工程職業(yè)學院,重慶401331)
Excel是辦公自動化軟件Office的套件之一,VBA則是Office中提供的一項重要功能。本文通過對Excel中數(shù)據(jù)表處理的實例,展現(xiàn)VBA在拓展Excel功能方面起到的重大作用。
Excel;VBA;數(shù)據(jù)表處理
VBA是Office辦公軟件套件內(nèi)嵌的編程語言。它采用Visual Basic的語言和面向對象技術,能夠很方便地增強宿主的功能,實現(xiàn)用戶定制化的便捷技術。本文使用VBA對Excel功能進行了拓展,編制了相應功能的程序和函數(shù),并與Excel自帶函數(shù)作比較,使大家了解VBA在拓展Excel功能、提高工作效率、減少錯誤發(fā)生機會等方面起到的作用。
假設一個系的學生會副部長以上的成員共有25人,在學期考核時相互進行打分,因此就會產(chǎn)生25張原始數(shù)據(jù)表(如圖1所示)。
現(xiàn)在要將每張表中每個學生干部的綜合得分算出來,然后再把每張表相同位置單元格的數(shù)據(jù)求平均值填入?yún)R總表中對應的單元格內(nèi)(如圖2所示),
最后按匯總表的綜合等分分出等級(90~100分為優(yōu)秀,80~89為良好,70~79為中等,60~69為合格,60以下為不合格)。
首先,我們求每個人的綜合得分,即在每張表的L3單元格中輸入公式“=SUM(B3:K3)”然后通過引用依次計算出下面每個人的分數(shù)。然后在匯總表的B3單元格中輸入“=AVERAGE(應夢姣:廖超!L3)”計算出25張表對該項打分的平均值,再通過引用計算出其他單元格的結果。最后在匯總表的M3單元格中輸入公式“=IF(0R(L3<0,L3> l00),“數(shù)據(jù)有誤”,IF(L3<6O,“不及格”,IF(L3<70,“及格”,IF(L3<80,“中等”,IF(L3<90,“良好”,IF(L3<=100,“優(yōu)秀”))))))”得出第一個學生干部的等級,再使用引用得到其他人的等級。
在Excel菜單中選擇 “工具一>宏一>Visual Basic編輯器”,它是VBA程序設計的開發(fā)環(huán)境,在這里可以進行代碼的編寫以及對話框的設計等。然后單擊“插入”菜單下的“模塊”,在代碼窗口中輸入下列自定義代碼:
通過運行以上程序,可以得到每張原始表綜合得分的數(shù)據(jù),并同時計算出匯總表中除等級以外的所有數(shù)據(jù)。然后我們再定義一個函數(shù)來劃分等級,該函數(shù)定義為“grade(綜合得分)”具體代碼如下:
進入Excel工作簿界面,在對應的要計算某個人等級的單元格插入自定義函數(shù)(如圖3所示),即“等級=grade (綜合得分)”,然后填充序列(如圖4所示),可得出所有學生的等級。
首先,在我們對每張考核表進行綜合得分計算的時候,如果用Excel自帶的函數(shù)來完成,就需要對每張表重復設置公式,表越多,重復次數(shù)就越多,這樣效率很低。當表的數(shù)量達到一定數(shù)量的時候,手工操作將成為不可能完成的工作。而運用VBA語言編寫的程序則不用關心工作表數(shù)量多少的問題,它會遍歷所有的表并完成相應的計算。
其次,在對匯總表進行統(tǒng)計的時候,我們輸入的公式為 “=AVERAGE(應夢姣:廖超!L3)”,由此可知,只有當所有原始數(shù)據(jù)表排列在表“應夢姣”和表“廖超”之間,且匯總表的位置不在它們中間時,才能正確統(tǒng)計所有的原始數(shù)據(jù)表,一旦位置發(fā)生變化,統(tǒng)計結果就會有誤。而運用VBA程序來操作,則可避免因表的排列順序不同引起的錯誤。
第三,根據(jù)計算過程和結果發(fā)現(xiàn),Excel自帶的IF函數(shù)不僅在書寫公式時繁瑣。公式結構不清晰,難于記憶,而且可用性也較差。對于每個月工資表的制作,都需要計算個人所得稅。當需要再次計算時,雖然可以復制公式,但卻必須每次都要確認公式中單元格地址引用的正確性,而需要確認的單元格地址就多達7處(如圖5所示)。
這樣的操作既繁瑣又容易出錯,對操作人員的要求較高。而使用VBA語言自己定義的函數(shù)可以代替一個長而復雜的公式或者系統(tǒng)自帶函數(shù),增強了可讀性,層次清晰,易于理解。
第四,VBA編制的自定義函數(shù)或程序的可用性也是很強的。對于同一個 Excel工作簿文件,當編制完成后,不同工作表之間都可以自由使用,無論計算多少次,都無需更改任何操作;對基于多個 Excel工作簿文件來完成同樣的計算,也不需要在沒有編制代碼的工作簿中再次書寫代碼,只需在VBA編輯器中將該模塊拖拽至相應的工作簿中即可,實現(xiàn)了一次編寫,多次使用,無需修改無需校對的便利。
第五,使用VBA安全性高也是一個優(yōu)點。對于代碼編寫者而言,有很多程序及代碼編制的思想理念都是需要保密的。使用VBA編寫的自定義函數(shù)或程序,只能讓用戶看到其名稱,而不是直接將代碼或公式展現(xiàn)在用戶面前,起到了一定的保密作用;而對于用戶來說,只是使用其完成所需的功能,無需去了解和掌握其中的結構、原理,簡化了操作,也可有效減少因誤操作改變了公式結構,導致計算結果出錯等事情的發(fā)生。
VBA在辦公自動化軟件中的使用能夠達到簡化操作、提高工作效率,減少錯誤發(fā)生的目的。此外,VBA還有很多其他方面的用途,只要我們?nèi)フJ識它、使用它,它將給我們帶來更多的方便與快捷。
[1]博彥科技著.Office VBA編程高手[M].北京:北京大學出版社,2000.
[2]蓋凱軍,劉忠譯.Scott D F.Visual Basic for Applications6實用大全[M].北京:中國水利水電出版社,1999.
[3]北京博彥科技發(fā)展有限責任公司譯.Microsoft Corporation.Office 2000應用程序開發(fā)[M].北京:清華大學出版社,2000.
[4]張峋.EXCEL VBA.入門與典型實例[M].北京:清華大學出版社,2007.
[5]嚴麗,鄧哲.基于VBA的Office二次開發(fā)[J].通化師范學院學報,2006(7).
[6]方文英.Excel宏編程的應用[J].辦公自動化,2008(7).
[7]萬鴻儒.Excel VBA程序設計[M].北京:中國鐵道出版社,2004.
責任編輯 王榮輝
Application of the Data Table Processing by Excel VBA
ZEGN Yang
(College of Computer Science,Chongqing University,Chongqing 400030,China; Chongqing College of Electronic Engineering,Chongqing,401331,China)
Excel is one of office automation software.VBA as an important function is provided by Office.By using a example of the data table processing in Excel,the paper reveals that VBA helps a lot to extend the function of Excel.
Excel;VBA;data table processing
TP39
A
1674-5787(2010)03-0161-03
2010-04-27
曾洋,男,重慶市人,重慶大學計算機學院在讀碩士研究生,重慶電子工程職業(yè)學院,講師。