費(fèi)陳靜
摘? 要:文章主要利用excel中VBA編程功能的自定義教師職稱系數(shù)函數(shù)、班級上課人數(shù)系數(shù)函數(shù)、上課門數(shù)系數(shù)函數(shù)、每輪次應(yīng)減課時(shí)節(jié)數(shù)函數(shù)和FOR循環(huán)語句來統(tǒng)計(jì)教師超課時(shí)費(fèi),通過編程就能提高教學(xué)管理者統(tǒng)計(jì)教師超課時(shí)費(fèi)的工作效率。
關(guān)鍵詞:EXCEL;VBA編程;函數(shù);超課時(shí)費(fèi)
中圖分類號(hào):TP391? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):2095-2945(2020)21-0130-02
Abstract: This paper mainly uses the self-defined teacher's professional title coefficient function, the class number coefficient function, the class number coefficient function, the reduced class period function and the FOR cycle sentence of the VBA programming function in excel to count teachers' overtime fees. Through programming, we can improve the efficiency of teaching administrators in counting teachers' overtime fees.
Keywords: EXCEL; VBA programming; function; extra class fee
1 超課時(shí)費(fèi)計(jì)算方法
本人一直從事教學(xué)管理工作多年,以前使用微軟excel辦公軟件自帶的公式計(jì)算教師超課時(shí)費(fèi),在累加教師的課時(shí)數(shù)計(jì)算起來不方便,后來我發(fā)現(xiàn)excel中有VBA編程功能可用于計(jì)算教師超課時(shí)費(fèi)簡單方便實(shí)用。我校的甲教師一周內(nèi)在1班上A課、在2班上A課、在3班上B課的超課時(shí)費(fèi)是怎樣計(jì)算呢?首先,計(jì)算甲教師一周內(nèi)1班A課的教學(xué)工作量等于甲教師1班A課實(shí)際課時(shí)乘以(1+職稱系數(shù)+上課門數(shù)系數(shù)+1班上課人數(shù)系數(shù));其次,用同樣的方法計(jì)算甲教師一周內(nèi)在2班上A課、在3班上B課的教學(xué)工作量;再次,將甲教師一周內(nèi)在1班上A課、在2班上A課、在3班上B課的教學(xué)工作量累加再加上甲教師附加工作量,得到這個(gè)工作量稱為甲教師折算后工作量合計(jì)。最后,甲教師折算后工作量合計(jì)減去應(yīng)減的工作量得到折算后超課時(shí)節(jié)數(shù),甲教師課時(shí)費(fèi)等于折算后超課時(shí)節(jié)數(shù)乘以每節(jié)課時(shí)費(fèi)。
2 用VBA編寫程序統(tǒng)計(jì)教師超課時(shí)費(fèi)步驟
第一步:準(zhǔn)備教師課堂教學(xué)的基本信息表。
第二步:用FOR循環(huán)語句計(jì)算該系部全部教師某班某門課的教學(xué)工作量小計(jì)和附加工作量。在開發(fā)工具欄中,插入一個(gè)窗體控件按鈕在表格中,打開VB編輯器,在按鈕代碼內(nèi)輸入如下代碼
mjksf = InputBox("每節(jié)課時(shí)費(fèi)(元)") '輸入課時(shí)費(fèi)
b = Sheet1.Range("A" & Rows.Count).End(xlUp).Row '統(tǒng)計(jì)A列有數(shù)據(jù)行數(shù)
For i = 5 To b Step 1 '某教師某班某門課的教學(xué)工作量小計(jì)和附加工作量
Sheet1.Cells(i, 12) = Sheet1.Cells(i, 8) * (1 + skrsxs(Sheet1.Cells(i, 10)) + skmsxs(Sheet1.Cells(i, 11)) + zcxs(Sheet1.Cells(i, 4)))
Sheet1.Cells(i, 15) = Sheet1.Cells(i, 12) + Sheet1.Cells(i, 14)
Next i
在上述代碼中調(diào)用了教師職稱系數(shù)函數(shù)(zcxs)、班級上課人數(shù)系數(shù)函數(shù)(skrsxs)和上課門數(shù)系數(shù)函數(shù)(skmsxs), 這些函數(shù)中都使用了判斷條件語句來判斷教師職稱、上課人數(shù)和上課門數(shù)每節(jié)課應(yīng)該增加多少系數(shù)。
Function zcxs(zc) '職稱系數(shù)函數(shù)
Select Case zc
Case "教授"
zcxs = 0.2? ? '職稱是教授每節(jié)課增加0.2系數(shù)
Case "副教授"
zcxs = 0.15? ?'職稱是副教授每節(jié)課增加0.15系數(shù)
Case "講師"
zcxs = 0.1? ? '職稱是講師每節(jié)課增加0.1系數(shù)
Case Else
zcxs = 0? ? ? '職稱是助教每節(jié)課增加0系數(shù)
End Select
End Function
Function skrsxs(skrs) '班級上課人數(shù)系數(shù)函數(shù)
If skrs >= 100 Then
skrsxs = 0.3? ? ? ? ?'班級上課人數(shù)100人及以上每節(jié)課增加0.3系數(shù)
Else
If skrs >= 90 Then
skrsxs = 0.25? ? ? ?'班級上課人數(shù)在90-99人每節(jié)課增加0.25系數(shù)
Else
If skrs >= 80 Then
skrsxs = 0.2? ? ? ? '班級上課人數(shù)在80-89人每節(jié)課增加0.2系數(shù)
Else
If skrs >= 70 Then
skrsxs = 0.15? ? ? ?'班級上課人數(shù)在70-79人每節(jié)課增加0.15系數(shù)
Else
If skrs >= 60 Then
skrsxs = 0.1? ? ? ? '班級上課人數(shù)在60-69人每節(jié)課增加0.1系數(shù)
Else
If skrs >= 50 Then
skrsxs = 0.05? ? ? '班級上課人數(shù)在50-59人每節(jié)課增加0.05系數(shù)
Else
skrsxs = 0? ? ? ? ?'班級上課人數(shù)在50人以下每節(jié)課增加0系數(shù)
End If
End If
End If
End If
End If
End If
End Function
Function skmsxs(skms) '上課門數(shù)系數(shù)函數(shù)
If skms >= 3 Then
skmsxs = 0.2? ? ? ? ?'教師上課門數(shù)3門及以上每節(jié)課增加0.2系數(shù)
Else
If skms = 2 Then
skmsxs = 0.1? ? ? ? ?'教師上課門數(shù)2門每節(jié)課增加0.1系數(shù)
Else
skmsxs = 0? ? ? ? ? ?'教師上課門數(shù)1門每節(jié)課增加0系數(shù)
End If
End If
End Function
在運(yùn)行上述代碼后,就計(jì)算系部全部教師某班某門課的教學(xué)工作量小計(jì)和附加工作量。
第三步:利用內(nèi)層FOR循環(huán)語句計(jì)算系部某教師的折算后工作量合計(jì)節(jié)數(shù)。
第四步:利用嵌套FOR循環(huán)語句和調(diào)用每輪次應(yīng)減課時(shí)節(jié)數(shù)函數(shù)(yjksjs)計(jì)算某系部全部教師折算后超課時(shí)補(bǔ)貼合計(jì)節(jié)數(shù)和超課時(shí)費(fèi)代碼見如下
For i = 5 To b Step 1
k = 0
l = 0
For j = i To 20 + i Step 1? ?'某教師的折算后工作量合計(jì)節(jié)數(shù)
If Sheet1.Cells(i, 3) = Sheet1.Cells(j, 3) Then
k = k + Sheet1.Cells(j, 15)
l = l + Sheet1.Cells(j, 12)
Else
Exit For
End If
Next j
Sheet1.Cells(i, 16) = k
Sheet1.Cells(i, 18) = Sheet1.Cells(i, 16) - yjksjs(Sheet1.Cells(i, 5), l) + Sheet1.Cells(i, 17)? '某教師折算后超課時(shí)補(bǔ)貼合計(jì)節(jié)數(shù)
If Sheet1.Cells(i, 18) < 0 Then
Sheet1.Cells(i, 19) = 0
Else
Sheet1.Cells(i, 19) = Round(mjksf * Sheet1.Cells(i, 18), 1)? ?'某教師超課時(shí)費(fèi)保留一位小數(shù)
End If
Range(Sheet1.Cells(i, 16), Sheet1.Cells(j - 1, 16)).Merge? '合并單元格
Range(Sheet1.Cells(i, 17), Sheet1.Cells(j - 1, 17)).Merge? '合并單元格
Range(Sheet1.Cells(i, 18), Sheet1.Cells(j - 1, 18)).Merge? '合并單元格
Range(Sheet1.Cells(i, 19), Sheet1.Cells(j - 1, 19)).Merge? '合并單元格
i = j - 1
Next i
Function yjksjs(a, l) '每輪應(yīng)減課時(shí)節(jié)數(shù)函數(shù)
If a = "專任教師" Then
yjksjs = 10 * 4 '專任教師每周教學(xué)工作量10節(jié),每輪四周應(yīng)減40節(jié)課
Else
yjksjs = l / 2 '兼職教師教學(xué)工作量減半計(jì)算
End If
End Function
3 結(jié)束語
在使用VBA編程后教師超課時(shí)費(fèi)匯總表模板已經(jīng)在學(xué)校的各個(gè)教學(xué)系部廣泛使用,受到教學(xué)秘書青睞,大大提高工作效率和計(jì)算準(zhǔn)確率。在教師超課時(shí)費(fèi)匯總表模板中,雖然某系部甲教師和乙教師姓名相同并且數(shù)據(jù)錄入行連續(xù),就會(huì)計(jì)算給一個(gè)教師,但是我們可以通過給名字相同教師加入一個(gè)數(shù)字進(jìn)行區(qū)別。另外一般情況下每輪次是統(tǒng)計(jì)四個(gè)周超課時(shí)費(fèi),所以專任教師每輪次應(yīng)減課時(shí)節(jié)數(shù)為40節(jié),但是根據(jù)學(xué)校實(shí)際情況是每學(xué)期最后四周安排兩周教學(xué)和兩周考試,這樣專任教師這輪次應(yīng)減課時(shí)節(jié)數(shù)為20節(jié),只需將每輪應(yīng)減課時(shí)節(jié)數(shù)函數(shù)中4改為2就可以統(tǒng)計(jì)教師超課時(shí)費(fèi)。
參考文獻(xiàn):
[1]楊洋.基于VBA的教學(xué)工作量及課時(shí)費(fèi)核算系統(tǒng)設(shè)計(jì)——以天津職業(yè)大學(xué)為例[J].無線互聯(lián)科技,2020,17(03):80-81.
[2]賀婧.Excel VBA在道路工程測量中的應(yīng)用[J].科技創(chuàng)新與應(yīng)用,2020(08):185-186.
[3]喻靖,朱峰,夏瑞杰.基于Excel VBA實(shí)現(xiàn)油田報(bào)表自動(dòng)化設(shè)計(jì)[J].價(jià)值工程,2020,39(09):193-194.
[4]鄒傳樹.運(yùn)用Excel_VBA編程實(shí)現(xiàn)一鍵批量發(fā)送工資條[J].電腦知識(shí)與技術(shù),2019,15(28):58-59.