蒙肇敏
(靈山縣靈東水庫管理局,廣西 靈山 535426)
靈東水庫位于欽州市靈山縣佛子鎮(zhèn)境內(nèi),壩址位于靈山縣東面的佛子鎮(zhèn)元眼村的大排麓嶺,距靈山縣城14 km,有公路與縣城相通,水庫座落在欽州市主要河流欽江干流的上游,控制集雨面積145 km2。靈東水庫是一座以灌溉為主,兼顧防洪、供水、發(fā)電等綜合利用的大(2)型水利工程。根據(jù)水文復(fù)核結(jié)果,100 a一遇設(shè)計洪水位101.486 m,5000 a 一遇洪水位104.39 m,總庫容為1.69 億m3。水庫樞紐主要建筑物由大壩、溢洪道、放水設(shè)施和壩后電站組成。
靈東水庫于2007 年6 月建成了水庫水情自動化測報系統(tǒng)及洪水預(yù)報調(diào)度系統(tǒng)。2008年以來,由筆者負責靈東水庫水文資料整編工作,每天都要逐步提取自動化觀測數(shù)據(jù),工作量大。共6個雨量站,1 個水位觀測站,2 個流量觀測站,每年提取原始數(shù)據(jù)要花費近10 d 的時間,而且由于數(shù)據(jù)龐大,難免出現(xiàn)數(shù)據(jù)錯漏。遙測系統(tǒng)數(shù)據(jù)只能當天提取,過了時間只能查看,不能提取,一年的原始數(shù)據(jù)有365個文件。相比手寫的原始資料,電子化原始數(shù)據(jù)更多更復(fù)雜,如果能進一步簡化原始數(shù)據(jù)提取,將能釋放更多的時間。
從2019 年起,筆者認真學(xué)習(xí)Excel VBA 程序,摸索用Excel VBA 程序提取原始數(shù)據(jù)與整編成果。表1 是筆者整編單位遙測系統(tǒng)所得的部分原始資料,因保密需要,水位一律用1 表示,雨量一律用2代表數(shù)據(jù)。由于雨量整編有時段降雨量摘錄,故時間B 列可以用Sheets("原始數(shù)據(jù)").Cells(i,5)=(Month(Sheets("原始數(shù)據(jù)").Cells(i,2)))&"月"&(Day(Sheets("原始數(shù)據(jù)").Cells(i,2)))& "日" &(Hour(Sheets("原始數(shù)據(jù)").Cells(i,2)))&"時",然后根據(jù)每個時段的水位按所收集的水位條數(shù)取其平均值,雨量按所收集的數(shù)值累計。
表1 整編后的部分原始資料
9 1月5日21:00 10 1月6日0:00 11 1月6日03:00 12 1月6日04:00 13 2 1月6日05:00 2 14 1月6日05:00 15 1月6日07:00 16 1月6日10:00 17 1月6日13:00 18 1月6日16:00 19 1月6日20:00 20 2 1月6日23:00 2 21 1月7日02:00 22 1月7日02:00 23 1月7日03:00 24 1月7日05:00 25 1月7日07:00 26 1月7日08:00 24 27 22 2 1月7日08:00 28 2 1月7日09:00 4 29 2 1月7日09:00 30 2019-01-05 21:15 2019-01-06 00:31 2019-01-06 03:47 2019-01-06 04:36 2019-01-06 05:26 2019-01-06 05:42 2019-01-06 07:03 2019-01-06 10:19 2019-01-06 13:34 2019-01-06 16:50 2019-01-06 20:06 2019-01-06 23:21 2019-01-07 02:37 2019-01-07 02:53 2019-01-07 03:10 2019-01-07 05:53 2019-01-07 07:15 2019-01-07 08:06 2019-01-07 08:55 2019-01-07 09:09 2019-01-07 09:41 2019-01-07 10:15 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1月7日10:00 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
把月-日-時串聯(lián),建立目標表格和原始數(shù)據(jù)表格匹配通道,通過Excel VBA find 函數(shù)查找目標文件的日期時間,對應(yīng)原始數(shù)據(jù)表中的日期時間,當互相配對時,就把水位填到對應(yīng)時間行的某一列。幾行的程序,用一兩分鐘的時間就可以完成幾天的工作量,效率非常高。
水位跟雨量不同的是,水位每個時段必然都是有數(shù)值的,如果遙測系統(tǒng)數(shù)據(jù)有變化,則實時收集發(fā)回中心站。沒有變化的時候,可能是一天收集一次,故必須在每個時段把對應(yīng)的水位按上個時段的水位給加上去。偶爾會因為通信故障導(dǎo)致某一時間段沒有數(shù)據(jù),所以筆者根據(jù)本單位的實際情況,加了一段代碼用以判別是正常的的空值還是故障導(dǎo)致的空值。所加代碼如下:
Sub 判斷水位有沒有斷報()
If lastrow-firstrow >25 Then‘超過25 h 不來報則判斷為數(shù)據(jù)斷報
采用Excel VBA 程序能快速整合原始數(shù)據(jù)文件,遙測系統(tǒng)只能導(dǎo)出當天或者上一天的數(shù)據(jù),過了就不能導(dǎo)出,只能查看,可以用如下宏代碼解決這個問題。
此宏代碼會按列合并文件,所以最好是同一格式的文件,不然,有些合并行看起來有點亂。通過此代碼把其他文件的數(shù)據(jù)拷貝到當前文件(見圖1),一年365個文件,幾分鐘就可以處理完畢。
圖1 按列合并后得到的當前文件
隨著水文測報自動化水平的不斷提高,計算機在水文資料整編中應(yīng)用非常廣,Excel作為最常用的整編工具,學(xué)會其中的函數(shù)能提高工作效率,用Excel VBA 程序來進行整編,更能起到事半功倍的作用。