張永輝
(河北省水文工程地質(zhì)勘查院 石家莊 050021)
在土工試驗(yàn)報(bào)告整理中,包括常規(guī)、粘粒分析、三軸(UU、CU)、直接剪切、滲透、濕陷等多項(xiàng)試驗(yàn)數(shù)據(jù),這些單項(xiàng)試驗(yàn)在各自數(shù)據(jù)處理后,往往都是采用人工輸入的方法,先輸入再讓人校對,工作量之大可想而知,既浪費(fèi)大量人力,又容易出錯(cuò)?,F(xiàn)在各試驗(yàn)多采用計(jì)算機(jī)生成電子版結(jié)果,筆者在工作中利用Excel VBA程序?qū)⑸傻碾娮影鏀?shù)據(jù)通過查找、替換相同樣號后數(shù)據(jù),以完成數(shù)據(jù)的修改即輸入問題。
Excel VBA是一門強(qiáng)化及改造Excel的程序語言,利用VBA可以完成兩大類任務(wù):解決自己的工作問題及開發(fā)通用軟件,如果非僅僅處理個(gè)人面臨的工作問題,而是編程適用群體需求,則更為重要。筆者利用Excel VBA編寫的程序還可作為通用程序,延伸到其他工作、領(lǐng)域及日常生活中完成數(shù)據(jù)輸入問題。
將VBA宏安全性設(shè)置為中或低(在安裝了防病毒軟件或檢查了所有要打開的文檔安全性時(shí)),以便創(chuàng)建運(yùn)行環(huán)境,正常啟動VBA程序。
用VBA編寫程序及應(yīng)用的步驟為:首先新建Excel工作簿,改名為“數(shù)據(jù)讀取程序”,將Sheet1重命名為“各試驗(yàn)項(xiàng)源數(shù)據(jù)”,將Sheet2重命名為“檢查同號并讀取”,從工具欄中調(diào)出“控制工具箱”,在“各試驗(yàn)項(xiàng)源數(shù)據(jù)”工作表中添加“CommandButton1”,雙擊進(jìn)入VBA編輯器界面,則自動打開“工程資源管理器窗口”中的“Sheet1(各試驗(yàn)項(xiàng)源數(shù)據(jù))”,在代碼編輯區(qū)輸入編寫的以下批量讀取電子數(shù)據(jù)代碼(輸入主程序,首尾語句已自動生成):
Private Sub CommandButton1_Click()
Dim n As Integer, i As Integer, j As Integer, m As Integer, k As Integer
Dim num As Integer, x As Integer
n = Sheet1.Range("B65536").End(xlUp).Row '-----原始表格的范圍
m = Sheet2.Range("B65536").End(xlUp).Row '-----對比表格的范圍
x = 1
For i = 2 To n
For j = 2 To m
If Sheet2.Cells(j, 2) = Sheet1.Cells(i, 2) Then
For k = 3 To 100
If Sheet2.Cells(j, k) <> Sheet1.Cells(i, k) Then
Sheet2.Cells(j, k).Interior.ColorIndex = 3
Sheet2.Cells(j, k) = Sheet1.Cells(i, k)
End If
Next k
End If
Next j
Next i
For j = 2 To m
num = 0
For i = 2 To n
If Sheet2.Cells(j, 2) = Sheet1.Cells(i, 2) Then
num = num + 1
End If
Next i
If num = 0 Then
Sheet1.Cells(1, x) = Sheet2.Cells(j, 2)
x = x + 1
End If
Next j
End Sub
打開VBA編輯器界面的屬性窗口,將“CommandButton1”caption標(biāo)題改為“讀取數(shù)據(jù)”且根據(jù)實(shí)際情況和個(gè)人愛好更改命令按鈕大小、顏色、字體。
在工作表 “各試驗(yàn)項(xiàng)源數(shù)據(jù)”中,將各單項(xiàng)試驗(yàn)土樣編號及電子結(jié)果粘貼到以B2為起始的區(qū)域;將土工試驗(yàn)總體報(bào)告的實(shí)驗(yàn)室編號粘貼到工作表“檢查同號并讀取”中以B2為起始的該列。點(diǎn)擊“讀取數(shù)據(jù)”按鈕,則自動查找穿插單項(xiàng)結(jié)果到工作表“檢查同號并讀取”中,順序?yàn)閳?bào)告土樣編號順序。
這個(gè)程序還有兩個(gè)亮點(diǎn):一是工作表 “各試驗(yàn)項(xiàng)源數(shù)據(jù)”中首行會顯示另一工作表多余的土樣編號;二是在工作表“檢查同號并讀取”中可以將數(shù)據(jù)加底色紅色,以便作樣品數(shù)據(jù)檢查時(shí)看是否數(shù)據(jù)修改過。
該程序可將其存為模板,將VBA程序加密碼鎖定,將模板改為只讀格式。如果已經(jīng)點(diǎn)擊了命令按鈕發(fā)現(xiàn)問題需重新處理可將工作表“檢查同號并讀取”中讀取的數(shù)據(jù)刪除處理后再運(yùn)行命令。
以下三個(gè)圖(圖1、圖2、圖3)為Excel工作簿和VBA程序編輯界面:
在試驗(yàn)工作中運(yùn)用此程序有效地解決了輸入、校對繁重的工作量問題,提高了工作效率,防止報(bào)告出錯(cuò),點(diǎn)擊命令按鈕,做到了一蹴而就,多快好省。
圖1 Excel工作簿試驗(yàn)土樣編號及電子結(jié)果粘貼
圖2 Excel工作簿中各試驗(yàn)項(xiàng)源數(shù)據(jù)檢查
圖3 Excel工作簿中VBA程序編輯界面
筆者利用Excel VBA不但可以解決土工試驗(yàn)工作中的數(shù)據(jù)輸入問題,而且可以作為通用程序,完成其它工作中的數(shù)據(jù)輸入問題,只要是工作表“各試驗(yàn)項(xiàng)源數(shù)據(jù)”中B列中有和 工作表“檢查同號并讀取”中B列有相同的內(nèi)容(包括如人名類的文本、數(shù)據(jù)類的數(shù)字編號),運(yùn)行程序就可以按照工作表“檢查同號并讀取”中B列的順序替換后面列中的內(nèi)容,從而完成數(shù)據(jù)輸入。利用該程序,有助于工作的開展,提高效率,有效避免數(shù)據(jù)出錯(cuò),對于電子數(shù)據(jù)的“輸入”具有重要的意義。
[1]羅剛君.Excel VBA程序開發(fā)自學(xué)寶典.電子工業(yè)出版社