安貝貝,李 靈,蔣昌潭
(重慶市環(huán)境監(jiān)測(cè)中心,重慶401147)
環(huán)境監(jiān)測(cè)數(shù)據(jù)統(tǒng)計(jì)需要對(duì)大量的環(huán)境監(jiān)測(cè)數(shù)據(jù)進(jìn)行處理,工作人員常常需要花費(fèi)大量的時(shí)間完成數(shù)據(jù)計(jì)算、整理和校對(duì),工作繁瑣、重復(fù)性強(qiáng)。為了提高環(huán)境監(jiān)測(cè)數(shù)據(jù)統(tǒng)計(jì)效率,本文以功能區(qū)噪聲數(shù)據(jù)篩選為例,將excel中的Visual Basic for Application(簡(jiǎn)稱VBA)應(yīng)用在環(huán)境監(jiān)測(cè)數(shù)據(jù)統(tǒng)計(jì)分析中。
Visual Basic for Applications(簡(jiǎn)稱VBA)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)方法[1]。使用VBA可以使工作自動(dòng)化;可以自定義EXCEL工具欄、菜單和界面;可以創(chuàng)建報(bào)表;可以對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的操作和分析等。
VBA集成開發(fā)環(huán)境是進(jìn)行VBA程序設(shè)計(jì)和代碼編寫的地方,在Excel中通過(guò)“工具—宏—Visual Basic編輯器”進(jìn)入VBA開發(fā)環(huán)境。
在環(huán)境監(jiān)測(cè)數(shù)據(jù)統(tǒng)計(jì)中,功能區(qū)噪聲的計(jì)算方法相對(duì)復(fù)雜。各個(gè)功能區(qū)噪聲監(jiān)測(cè)數(shù)據(jù)需要先根據(jù)“聲環(huán)境質(zhì)量常規(guī)監(jiān)測(cè)暫行技術(shù)規(guī)定”要求,利用公式 (1)分別計(jì)算出晝間 (Ld)和夜間 (Ln)等效聲級(jí),再按照《聲環(huán)境質(zhì)量標(biāo)準(zhǔn)》 (GB3096-2008)[2]對(duì)晝間、夜間等效聲級(jí)進(jìn)行獨(dú)立評(píng)價(jià)。
式中:Leq(i)為白天 (06∶00—22∶00)16個(gè)小時(shí)中第i個(gè)小時(shí)的等效聲級(jí),Leq(j)為夜間(22∶00—06∶00)8 個(gè)小時(shí)中第 j個(gè)小時(shí)的等效聲級(jí)。
對(duì)某個(gè)功能區(qū)噪聲監(jiān)測(cè)點(diǎn)建立表1所示的excel表,啟動(dòng)“宏”編輯器,首先定義全局變量,例如:Dim row As Integer。
(定義列變量),Dim Sumval_D As Double(定義晝間等效聲級(jí)為浮點(diǎn)型變量),再對(duì)變量進(jìn)行初始化:Sumval_D=0#,Sumval_N=0#等。
(定義整型循環(huán)變量),Dim Thecell As Range
根據(jù)公式 (1),利用冪函數(shù) Application.WorksheetFunction.Power()和對(duì)數(shù)函數(shù)Application.WorksheetFunction.Log10()進(jìn)行代碼編寫,結(jié)果如表2所示。
核心代碼示范如下:
Sumval_D=0#
Sumval_N=0#
For row=1 To 6
通過(guò)對(duì)沖動(dòng)性購(gòu)買行為的相關(guān)文獻(xiàn)進(jìn)行歸納分析,發(fā)現(xiàn)現(xiàn)有文獻(xiàn)的研究熱點(diǎn)是消費(fèi)者沖動(dòng)性購(gòu)買行為的影響因素,這方面的研究可以擴(kuò)展出更多的具體研究情境下消費(fèi)者的沖動(dòng)性購(gòu)買行為受什么因素的影響,同時(shí),可以結(jié)合營(yíng)銷心理學(xué)方面的知識(shí),研究消費(fèi)者沖動(dòng)性購(gòu)買行為發(fā)生時(shí)其心理狀態(tài)的變化。
Set Thecell=Range("B2").Offset(row-1,0)
Sumval_N=Sumval_N+Application.WorksheetFunction.Power(10,Thecell.Value*0.1)
Next row
For row=1 To 16
Set Thecell=Range("B8").Offset(row-1,0)
Sumval_D=Sumval_D+Application.WorksheetFunction.Power(10,Thecell.Value*0.1)
Next row
For row=1 To 2
Sumval_N=Sumval_N+Application.WorksheetFunction.Power(10,Thecell.Value*0.1)
Next row
Sumval_D =10* Application.Worksheet Function.Log10(Sumval_D/16)
Sumval_N =10* Application.Worksheet Function.Log10(Sumval_N/8)
在計(jì)算晝間和夜間等效聲級(jí)的基礎(chǔ)上,分別篩選出該測(cè)點(diǎn)晝間和夜間等效等級(jí)最小出現(xiàn)的日期,結(jié)果如圖1所示。
首先利用excel“工具—宏”(或快捷鍵Alt+F8)新建“宏”,再新增一 Button按鈕 (Private Sub CommandButton1_Click()End Sub),以方便今后直接執(zhí)行該宏。
表1 功能區(qū)噪聲原始數(shù)據(jù)表
表2 等效聲級(jí)計(jì)算結(jié)果
核心代碼示范如下:
For row=1 To 9
Set Thecell=Range("B29").Offset(0,row)
If minval>= Thecell.Value Then minval=Thecell.Value
If minval>= Thecell.Value Then mincol=Thecell.Column
Next row
MsgBox"晝間等效聲級(jí)最小的日期"&Cells(1,mincol_D)&";"&"夜間等效聲級(jí)最小的日期:"&Cells(1,mincol_N)
針對(duì)環(huán)境監(jiān)測(cè)數(shù)據(jù)統(tǒng)計(jì)中較為復(fù)雜的功能區(qū)噪聲等效聲級(jí)監(jiān)測(cè)日期的篩選問(wèn)題,利用Excel中的VBA編制宏代碼能夠方便快捷地實(shí)現(xiàn)。此外,Excel VBA使用簡(jiǎn)便,功能強(qiáng)大,能夠解決環(huán)境監(jiān)測(cè)工作中存在的數(shù)據(jù)量大,計(jì)算復(fù)雜繁瑣等困難。
[1]趙志東.Excel VBA基礎(chǔ)入門 (第2版)[M].北京:人民郵電出版社,2011.
[2]GB3096-2008.聲環(huán)境質(zhì)量標(biāo)準(zhǔn) [S].
[3]徐浙峰,林樹生,封龍.用EXCEL統(tǒng)計(jì)功能區(qū)噪聲 [J].黑龍江環(huán)境通報(bào),2006,30(3):94-96.