張永輝 張艷艷
摘要:土工試驗(yàn)中,由多個(gè)不同的試驗(yàn)項(xiàng)目會(huì)生產(chǎn)大批量數(shù)據(jù),包括原始數(shù)據(jù)及報(bào)告資料。整理數(shù)據(jù)時(shí)涉及大量的輸入、校對(duì)工作,會(huì)耗費(fèi)大量的人力、精力和時(shí)間,成為限制提交報(bào)告等資料的環(huán)節(jié)及制約工作效率的瓶頸。為解決這一問(wèn)題,利用Excel VBA開(kāi)發(fā)程序,仿照人工先見(jiàn)樣號(hào)再輸入的同理,尋找、穿插同項(xiàng)試驗(yàn)數(shù)據(jù)到土工試驗(yàn)資料及報(bào)告總表中,可免去人工校對(duì)之苦,提高生產(chǎn)效率。
關(guān)鍵詞:土工試驗(yàn)??? Excel VBA??? 電子數(shù)據(jù)批量輸入
中圖分類號(hào): P209文獻(xiàn)標(biāo)識(shí)碼:A?? 文章編號(hào):1672-3791(2021)01(b)-0000-00
The Scheme of Using VBA to Solve the Batch "Input" of Data in the Sorting of Geotechnical Test Data
ZHANG Yonghui1? ZHANG Yanyan2
(1.Hebei Hydrological Engineering Geological Survey Institute, Shijiazhuang, Hebei Province, 050021 China; 2.Housing and Urban-Rural Development Bureau of Gaocheng District, Shijiazhuang City, Shijiazhuang, Hebei Province, 052160 China)
Abstract: In the geotechnical test, large numbers of data, including raw data and reports, are produced by several different test items. Data sorting involves a lot of input and proofreading, which consumes a lot of manpower, energy and time, and becomes a phase that limits the submission of reports and other materials or a bottleneck that restricts work efficiency. In order to solve this problem, Excel VBA development program is used to find and insert the same test data into the general table of geotechnical test data and report, which can avoid the pain of manual proofreading and improve production efficiency.
Key Words: Geotechnical test; Excel VBA; Electronic data; Batch input
在土工試驗(yàn)報(bào)告整理中,包括常規(guī)、粘粒分析、三軸(UU、CU)、直接剪切、滲透、濕陷等多項(xiàng)試驗(yàn)數(shù)據(jù),這些單項(xiàng)試驗(yàn)在各自數(shù)據(jù)處理后,往往都是采用人工輸入的方法,先輸入再讓人校對(duì),工作量之大可想而知,即浪費(fèi)大量的人力,又容易出錯(cuò)。現(xiàn)在各試驗(yàn)多采用計(jì)算機(jī)生成電子版結(jié)果,筆者在工作中利用Excel VBA程序?qū)⑸傻碾娮影鏀?shù)據(jù)通過(guò)查找、替換相同樣號(hào)后數(shù)據(jù),以完成數(shù)據(jù)的修改即輸入問(wèn)題[1-3]。
1用Excel VBA開(kāi)發(fā)程序的重要性
Excel VBA是一門強(qiáng)化及改造Excel的程序語(yǔ)言,利用VBA可以完成兩大類任務(wù):解決自己的工作問(wèn)題及開(kāi)發(fā)通用軟件,如果非僅僅處理個(gè)人面臨的工作問(wèn)題,而是編程適用群體需求,則更為重要。筆者利用Excel VBA編寫(xiě)的程序還可作為通用程序,延伸到其他工作、領(lǐng)域及日常生活中完成數(shù)據(jù)輸入問(wèn)題。
2 Excel VBA運(yùn)行環(huán)境
將VBA宏安全性設(shè)置為中或低(在安裝了防病毒軟件或檢查了所有要打開(kāi)的文檔安全性時(shí)),以便創(chuàng)建運(yùn)行環(huán)境,正常啟動(dòng)VBA程序[3-5]。
3 用Excel VBA開(kāi)發(fā)程序批量輸入電子數(shù)據(jù)
用VBA編寫(xiě)程序及應(yīng)用的步驟為:首先新建Excel工作簿,改名為“數(shù)據(jù)讀取程序”,將Sheet1重命名為“各試驗(yàn)項(xiàng)源數(shù)據(jù)”|,將Sheet2重命名為“檢查同號(hào)并讀取”,從工具欄中調(diào)出“控制工具箱”,在“各試驗(yàn)項(xiàng)源數(shù)據(jù)”工作表中添加“Command Button1”,雙擊進(jìn)入VBA編輯器界面,則自動(dòng)打開(kāi)“工程資源管理器窗口”中的“Sheet1(各試驗(yàn)項(xiàng)源數(shù)據(jù))”,在代碼編輯區(qū)輸入編寫(xiě)的以下批量讀取電子數(shù)據(jù)代碼(輸入主程序,首尾語(yǔ)句已自動(dòng)生成):
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 '-----對(duì)比表格的范圍
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
打開(kāi)VBA編輯器界面的屬性窗口,將“CommandButton1”caption標(biāo)題改為“讀取數(shù)據(jù)”且根據(jù)實(shí)際情況和個(gè)人愛(ài)好更改命令按鈕大小、顏色、字體。
在工作表“各試驗(yàn)項(xiàng)源數(shù)據(jù)”中,將各單項(xiàng)試驗(yàn)土樣編號(hào)及電子結(jié)果粘貼到以B2為起始的區(qū)域;將土工試驗(yàn)總體報(bào)告的實(shí)驗(yàn)室編號(hào)粘貼到工作表“檢查同號(hào)并讀取”中以B2為起始的該列。點(diǎn)擊“讀取數(shù)據(jù)”按鈕,則自動(dòng)查找穿插單項(xiàng)結(jié)果到工作表“檢查同號(hào)并讀取”中,順序?yàn)閳?bào)告土樣編號(hào)順序。
這個(gè)程序還有兩個(gè)亮點(diǎn):一是工作表“各試驗(yàn)項(xiàng)源數(shù)據(jù)”中首行會(huì)顯示另一工作表多余的土樣編號(hào);二是在工作表“檢查同號(hào)并讀取”中可以將數(shù)據(jù)加底色紅色,以便作樣品數(shù)據(jù)檢查時(shí)看是否數(shù)據(jù)修改過(guò)。
該程序可將其存為模板,將VBA程序加密碼鎖定,將模板改為只讀格式。如果已經(jīng)點(diǎn)擊了命令按鈕發(fā)現(xiàn)問(wèn)題需重新處理可將工作表“檢查同號(hào)并讀取”中讀取的數(shù)據(jù)刪除處理后再運(yùn)行命令[6-9]。
圖1,圖2為Excel工作簿和VBA程序編輯界面:
在試驗(yàn)工作中運(yùn)用此程序有效地解決了輸入、校對(duì)繁重的工作量問(wèn)題,提高了工作效率,防止報(bào)告出錯(cuò),點(diǎn)擊命令按鈕,做到了一蹴而就,多快好省。
4用Excel VBA開(kāi)發(fā)程序批量輸入電子數(shù)據(jù)作為通用軟件的意義
筆者利用Excel VBA不但可以解決土工試驗(yàn)工作中的數(shù)據(jù)輸入問(wèn)題,而且可以作為通用程序,完成其他工作中的數(shù)據(jù)輸入問(wèn)題,只要是工作表“各試驗(yàn)項(xiàng)源數(shù)據(jù)”中B列中有和工作表“檢查同號(hào)并讀取”中B列有相同的內(nèi)容(包括如人名類的文本、數(shù)據(jù)類的數(shù)字編號(hào)),運(yùn)行程序就可以按照工作表“檢查同號(hào)并讀取”中B列的順序替換后面列中的內(nèi)容,從而完成數(shù)據(jù)輸入。利用該程序,有助于工作的開(kāi)展,提高效率,有效避免數(shù)據(jù)出錯(cuò),對(duì)于電子數(shù)據(jù)的“輸入”具有重要的意義。
參考文獻(xiàn)
[1]? 羅剛君.Excel VBA程序開(kāi)發(fā)自學(xué)寶典[M].4版.北京:電子工業(yè)出版社,2021.
[2]? 本書(shū)編委會(huì).土工試驗(yàn)方法標(biāo)準(zhǔn):GB/T 50123-2019[S].北京:中國(guó)計(jì)劃出版社,2019.
[3]? 務(wù)新超.土力學(xué)[M].3版.河南:黃河水利出版社,2018.
[4]? 張巖艷,嚴(yán)晨.活用Excel VBA讓你的工作化繁為簡(jiǎn)[M].北京:機(jī)械工業(yè)出版社,2016.
[5]? 陳瓊霞.巖土工程勘察土工試驗(yàn)中的質(zhì)量與管理策略[J].科技風(fēng),2017(8):151.
[6]? 袁波.巖土工程勘察土工試驗(yàn)中的常見(jiàn)問(wèn)題及改善方法[J].低碳世界,2017(26):39-40
[7]? 馬雪.巖土工程勘察土工試驗(yàn)中的常見(jiàn)問(wèn)題及措施[J].江西建材,2021(10):110-111.
[8]? 肖乾.巖土工程勘察質(zhì)量控制與評(píng)價(jià)方法研究[D].合肥:安徽建筑大學(xué),2020.
[9]? 李祿維.巖土工程勘察地下空間信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國(guó)地質(zhì)大學(xué)(北京),2019.