成績(jī)統(tǒng)計(jì)軟件都是按固定的算法進(jìn)行統(tǒng)計(jì)的,輸出的數(shù)據(jù)報(bào)表肯定不會(huì)100%符合不同學(xué)校老師的需求。這時(shí)我們可以通過(guò)Excel的宏對(duì)輸出的報(bào)表進(jìn)行二次處理。其實(shí),說(shuō)白了掌握Excel的VBA你都可以自行還原軟件的大部分統(tǒng)計(jì)功能。程序設(shè)計(jì)的核心是思路,解決問(wèn)題的方案因人因項(xiàng)目不同而已。而Excel再處理的思路就是:通過(guò)VBA從表格獲取數(shù)據(jù);通過(guò)VBA定義統(tǒng)計(jì)函數(shù)并根據(jù)源數(shù)據(jù)進(jìn)行統(tǒng)計(jì)加工;輸出統(tǒng)計(jì)結(jié)果到Excel。
一、什么是VBA
VBA(Visual Basic for Applications)是Visual Basic的一種宏語(yǔ)言,是最基礎(chǔ)的編程語(yǔ)言。要深入精通的一門(mén)語(yǔ)言不容易,但我們也不需要鉆牛角尖只要掌握能解決問(wèn)題的相關(guān)知識(shí)就行,沒(méi)那么多精力。VBA就相當(dāng)Excel的膠水,把Excel中的數(shù)據(jù)通過(guò)VBA設(shè)計(jì)各種程序邏輯來(lái)解決我們的需求。
二、簡(jiǎn)例
下面我舉一個(gè)最簡(jiǎn)單的例子,可根據(jù)以下步驟在Excel上跟著操作。
1、打開(kāi)Excel,右擊下面的標(biāo)簽欄【sheet1】工作表選擇【查看代碼】時(shí)會(huì)另開(kāi)窗體打開(kāi)VBA編輯界面;
2、在VBA編輯器內(nèi)上面的第一個(gè)下拉框選擇【worksheet】,你可以把這理解為下面的程序邏輯作用范圍在你看到的工作表這里,右邊的下拉框是幾個(gè)事件,我們選擇Change事件(就是當(dāng)工作表變化時(shí)會(huì)觸發(fā)這個(gè)事件,我們把代碼寫(xiě)到這個(gè)事件中間就可以了),其他幾個(gè)事件字面上可以看出大概意思具體的大家有興趣可以網(wǎng)上查下;
3、在事件中輸入代碼:Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
這行代碼什么意思呢,我們看下示意圖:
A B C
1 (1,1) (1,2) (1,3)
大家應(yīng)該看明白了吧,Sheet1表示工作表中的Sheet1表格,Cells表示單元格集合,(1,1)這些是單元格的位置,你就在腦袋里把表格列上的字母換成后面的數(shù)字就可以了。完整代碼是:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
End Sub
那么我們這行代碼的意思就是,第一行第3格的內(nèi)容是第1格和第2格相加的結(jié)果,在表格內(nèi)容有任何變化都會(huì)執(zhí)行一次。但大家要注意的是,VBA里的變量是變體,而變體的意思是指這個(gè)變量并沒(méi)有指定特定類(lèi)型可以是字符類(lèi)型也可以是數(shù)字類(lèi)型。所有你如果不在代碼顯式指定的話它的運(yùn)算公式里后面的變量就會(huì)根據(jù)第一個(gè)變量的類(lèi)型自行轉(zhuǎn)型。也就是說(shuō),你在當(dāng)?shù)?個(gè)表格為內(nèi)容1,第2表格內(nèi)容為2,他們相加有可能是1+2=3,也有可能是1+2=12,這里取決于你設(shè)置的單元格類(lèi)型。
4、點(diǎn)工具欄的保存按鈕,如果彈出“無(wú)法在未啟用宏的工作簿中”,選否,然后另存為.xlsm格式,下次打開(kāi)這個(gè)xlsm后續(xù)的文件即可;
5、Excel默認(rèn)應(yīng)該是禁用宏的,這里先關(guān)閉當(dāng)前文件后重新打開(kāi)xlsm后綴的文件,如果提示未啟用宏就點(diǎn)啟用。在第1行的第1個(gè)和第2個(gè)單元格隨便輸下數(shù)字,第3格就可以看到計(jì)算結(jié)果了。(如果開(kāi)啟了宏,直接打開(kāi)xls格式的文件就可以了)
L.Q.R 210331-210401(待繼)
聯(lián)系客服