談曉曉 上海鐵路局科研所
運(yùn)用VBA對(duì)超偏載檢測(cè)裝置期間核查數(shù)據(jù)的處理
談曉曉 上海鐵路局科研所
介紹運(yùn)用 Microsoft Excel 2007(以下簡(jiǎn)稱:Excel)中的Visual Basic for Application(以下簡(jiǎn)稱:VBA)功能,編寫一段自動(dòng)處理數(shù)據(jù)的程序代碼。該程序可根據(jù)輸入的列車過(guò)衡數(shù)據(jù),自動(dòng)計(jì)算誤差、判斷是否超差和統(tǒng)計(jì)合格數(shù)量等,能夠提高超偏載檢測(cè)裝置(以下簡(jiǎn)稱:超偏載)期間核查數(shù)據(jù)處理效率,從而減輕工作負(fù)擔(dān)。
VBA;程序代碼;自動(dòng)處理數(shù)據(jù)
根據(jù)JJF(鐵道)606-2011《鐵道貨車超偏載檢測(cè)裝置期間核查規(guī)范》(以下簡(jiǎn)稱:期間核查規(guī)范)的要求,為確認(rèn)超偏載示值誤差是否滿足要求,在兩次周期檢定之間,須對(duì)超偏載進(jìn)行不少于1次的期間核查。
本部門利用現(xiàn)有檢定資源——檢衡車標(biāo)準(zhǔn)裝置(以下簡(jiǎn)稱:檢衡車)在超偏載上通過(guò)時(shí)產(chǎn)生過(guò)衡數(shù)據(jù),每月遠(yuǎn)程對(duì)其進(jìn)行收集處理,來(lái)完成對(duì)超偏載設(shè)備稱量性能的期間核查(在現(xiàn)有檢定資源的限制下無(wú)法完成對(duì)偏載和偏重的期間核查)。超偏載期間核查數(shù)據(jù)最大允許誤差的要求見(jiàn)表1,以遠(yuǎn)程核查最大允許誤差為準(zhǔn)。
表1 超載測(cè)試總重最大允許誤差
使用鐵科院電子所制作的《鐵路貨運(yùn)計(jì)量安全檢測(cè)監(jiān)控系統(tǒng)》(以下簡(jiǎn)稱:監(jiān)控系統(tǒng)),可以通過(guò)追蹤檢衡車車號(hào)獲得其過(guò)衡數(shù)據(jù),然后利用Excel將數(shù)據(jù)與標(biāo)準(zhǔn)值進(jìn)行比較,來(lái)判斷超偏載設(shè)備是否處于良好的工作狀態(tài)。(需要特別指出的是,監(jiān)控系統(tǒng)自帶期間核查功能,但由于標(biāo)準(zhǔn)器的質(zhì)量發(fā)生變化后,監(jiān)控系統(tǒng)只保留最新的標(biāo)準(zhǔn)值,因此對(duì)標(biāo)準(zhǔn)值變化前的過(guò)衡數(shù)據(jù)進(jìn)行的誤差計(jì)算全都是錯(cuò)誤和無(wú)效的,故不推薦使用。)
可以設(shè)想一下整個(gè)比較過(guò)程,首先將過(guò)衡數(shù)據(jù)復(fù)制到Excel中,然后找出相應(yīng)檢衡車車號(hào)處于有效期內(nèi)的標(biāo)準(zhǔn)值,將標(biāo)準(zhǔn)值與過(guò)衡數(shù)據(jù)中的總重進(jìn)行比較,計(jì)算出誤差,最后判斷是否超差,并注明。如果這些工作全部通過(guò)手動(dòng)處理,不僅耗時(shí)耗力,還十分容易出錯(cuò)。因此我們可以借助Excel中的VBA功能來(lái)完成自動(dòng)計(jì)算誤差、判斷是否超差和統(tǒng)計(jì)合格數(shù)量等工作,從而提高超偏載期間核查數(shù)據(jù)處理效率,減輕工作負(fù)擔(dān)。
由于Excel在默認(rèn)使用狀態(tài)下,其自帶的VBA功能是關(guān)閉的,所以首先需要做的就是開(kāi)放VBA功能。打開(kāi)方式是:點(diǎn)擊Excel軟件界面的左上角 圖標(biāo),點(diǎn)擊“Excel選項(xiàng)”,在“常用”選項(xiàng)欄中勾選“在功能區(qū)顯示‘開(kāi)發(fā)工具’選項(xiàng)卡”,點(diǎn)擊確認(rèn)。這樣,在功能區(qū)就會(huì)出現(xiàn)“開(kāi)發(fā)工具”標(biāo)簽。利用其中的Visual Basic(for Application)編寫代碼,可以對(duì)Excel中的單元格數(shù)據(jù)進(jìn)行操作、計(jì)算和統(tǒng)計(jì)。
3.1 填寫相關(guān)數(shù)據(jù)
首先將需要進(jìn)行計(jì)算處理的數(shù)據(jù)從監(jiān)控系統(tǒng)復(fù)制到Excel中,在此不妨將工作表名稱改成“期間核查數(shù)據(jù)”。由于監(jiān)控系統(tǒng)中的原始過(guò)衡數(shù)據(jù)包含許多不必要的字段,因此本文只選取其中幾項(xiàng)必要的字段進(jìn)行敘述(見(jiàn)表2,其中最后四項(xiàng)字段是需要通過(guò)編寫VBA程序代碼自動(dòng)處理填寫的)。
由于檢衡車的標(biāo)準(zhǔn)值會(huì)發(fā)生改變,故再新建一個(gè)“標(biāo)準(zhǔn)值”工作表,用來(lái)記錄不同檢衡車在不同有效期內(nèi)的標(biāo)準(zhǔn)值(見(jiàn)表3)。
表2 過(guò)衡數(shù)據(jù)
表3 標(biāo)準(zhǔn)值字段
3.2 制作代碼觸發(fā)按鈕
編寫的代碼可以設(shè)置成通過(guò)點(diǎn)擊某一文檔元件來(lái)觸發(fā)。在這里我們繪制一個(gè)“矩形”來(lái)觸發(fā)代碼,然后右鍵單擊繪制的矩形,點(diǎn)擊“指定宏”,點(diǎn)擊“新建”,這樣就進(jìn)入了代碼編寫界面,可以看到系統(tǒng)自動(dòng)為我們寫好了如下兩句代碼。
Sub矩形1_Click()
End Sub
而我們編寫的所有代碼均須寫在上面給兩行代碼之間。這樣,通過(guò)點(diǎn)擊矩形,就能執(zhí)行編寫的代碼。
為了分別實(shí)現(xiàn)數(shù)據(jù)分析和數(shù)據(jù)統(tǒng)計(jì)功能,不妨將上述矩形單獨(dú)作為數(shù)據(jù)處理的觸發(fā)按鈕,而另外繪制一個(gè)矩形,單獨(dú)作為數(shù)據(jù)統(tǒng)計(jì)的觸發(fā)按鈕。
4.1 數(shù)據(jù)處理代碼編寫思路
利用循環(huán)語(yǔ)句,對(duì)每一條過(guò)衡數(shù)據(jù)進(jìn)行:
(1)尋找填寫標(biāo)準(zhǔn)值;
(2)計(jì)算誤差;
(3)判斷是否超差等工作。
4.1.1 標(biāo)準(zhǔn)值的填寫
根據(jù)表2中不同檢衡車的“通過(guò)時(shí)間”以及“車號(hào)”信息,在“標(biāo)準(zhǔn)值”工作表中尋找對(duì)應(yīng)的、在有效期內(nèi)的標(biāo)準(zhǔn)值,并賦值到相應(yīng)單元格內(nèi)。
4.1.2 誤差計(jì)算
根據(jù)總重和標(biāo)準(zhǔn)值,分別計(jì)算出絕對(duì)誤差和相對(duì)誤差。
4.1.3 數(shù)據(jù)判斷
根據(jù)過(guò)衡速度和誤差,以及表1的規(guī)定最大允許誤差,判斷是否超差或者過(guò)車速度不符合要求。
4.2 數(shù)據(jù)統(tǒng)計(jì)代碼編寫思路
利用循環(huán)語(yǔ)句,分別統(tǒng)計(jì)過(guò)車總條數(shù)和無(wú)效數(shù)(過(guò)車速度不符合要求以及超出標(biāo)準(zhǔn)器有效期),計(jì)算兩者之差即為有效數(shù);然后根據(jù)誤差大小,判斷統(tǒng)計(jì)超差數(shù);將有效數(shù)減去超差數(shù),即為合格數(shù);計(jì)算出合格率=(合格數(shù)/有效數(shù))*100%,最后用Msgbox將統(tǒng)計(jì)結(jié)果顯示出來(lái)。
5.1 數(shù)據(jù)處理源代碼
5.2 數(shù)據(jù)統(tǒng)計(jì)源代碼
圖1為數(shù)據(jù)處理結(jié)果,圖2為數(shù)據(jù)統(tǒng)計(jì)結(jié)果。
圖1 數(shù)據(jù)處理結(jié)果
圖2 數(shù)據(jù)統(tǒng)計(jì)結(jié)果
VBA功能可以在各種數(shù)據(jù)統(tǒng)計(jì)中得到廣泛地應(yīng)用。它不僅能夠提高工作效率,降低勞動(dòng)強(qiáng)度,同時(shí)也可以減少人為因素造成的各種錯(cuò)誤。因此,在實(shí)際工作中值得推廣使用。
責(zé)任編輯:許耀元
來(lái)稿日期:2016-09-01