APP下载

土工试验报告整理中利用Excel VBA程序解决电子数据批量“输入”问题

2017-03-12张永辉

河北地质 2017年3期
关键词:同号输入土样

张永辉

(河北省水文工程地质勘查院 石家庄 050021)

在土工试验报告整理中,包括常规、粘粒分析、三轴(UU、CU)、直接剪切、渗透、湿陷等多项试验数据,这些单项试验在各自数据处理后,往往都是采用人工输入的方法,先输入再让人校对,工作量之大可想而知,既浪费大量人力,又容易出错。现在各试验多采用计算机生成电子版结果,笔者在工作中利用Excel VBA程序将生成的电子版数据通过查找、替换相同样号后数据,以完成数据的修改即输入问题。

1 用Excel VBA开发程序的重要性

Excel VBA是一门强化及改造Excel的程序语言,利用VBA可以完成两大类任务:解决自己的工作问题及开发通用软件,如果非仅仅处理个人面临的工作问题,而是编程适用群体需求,则更为重要。笔者利用Excel VBA编写的程序还可作为通用程序,延伸到其他工作、领域及日常生活中完成数据输入问题。

2 Excel VBA运行环境

将VBA宏安全性设置为中或低(在安装了防病毒软件或检查了所有要打开的文档安全性时),以便创建运行环境,正常启动VBA程序。

3 用Excel VBA开发程序批量输入电子数据

用VBA编写程序及应用的步骤为:首先新建Excel工作簿,改名为“数据读取程序”,将Sheet1重命名为“各试验项源数据”,将Sheet2重命名为“检查同号并读取”,从工具栏中调出“控制工具箱”,在“各试验项源数据”工作表中添加“CommandButton1”,双击进入VBA编辑器界面,则自动打开“工程资源管理器窗口”中的“Sheet1(各试验项源数据)”,在代码编辑区输入编写的以下批量读取电子数据代码(输入主程序,首尾语句已自动生成):

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标题改为“读取数据”且根据实际情况和个人爱好更改命令按钮大小、颜色、字体。

在工作表 “各试验项源数据”中,将各单项试验土样编号及电子结果粘贴到以B2为起始的区域;将土工试验总体报告的实验室编号粘贴到工作表“检查同号并读取”中以B2为起始的该列。点击“读取数据”按钮,则自动查找穿插单项结果到工作表“检查同号并读取”中,顺序为报告土样编号顺序。

这个程序还有两个亮点:一是工作表 “各试验项源数据”中首行会显示另一工作表多余的土样编号;二是在工作表“检查同号并读取”中可以将数据加底色红色,以便作样品数据检查时看是否数据修改过。

该程序可将其存为模板,将VBA程序加密码锁定,将模板改为只读格式。如果已经点击了命令按钮发现问题需重新处理可将工作表“检查同号并读取”中读取的数据删除处理后再运行命令。

以下三个图(图1、图2、图3)为Excel工作簿和VBA程序编辑界面:

在试验工作中运用此程序有效地解决了输入、校对繁重的工作量问题,提高了工作效率,防止报告出错,点击命令按钮,做到了一蹴而就,多快好省。

图1 Excel工作簿试验土样编号及电子结果粘贴

图2 Excel工作簿中各试验项源数据检查

图3 Excel工作簿中VBA程序编辑界面

4 用Excel VBA开发程序批量输入电子数据作为通用软件的意义

笔者利用Excel VBA不但可以解决土工试验工作中的数据输入问题,而且可以作为通用程序,完成其它工作中的数据输入问题,只要是工作表“各试验项源数据”中B列中有和 工作表“检查同号并读取”中B列有相同的内容(包括如人名类的文本、数据类的数字编号),运行程序就可以按照工作表“检查同号并读取”中B列的顺序替换后面列中的内容,从而完成数据输入。利用该程序,有助于工作的开展,提高效率,有效避免数据出错,对于电子数据的“输入”具有重要的意义。

[1]罗刚君.Excel VBA程序开发自学宝典.电子工业出版社

猜你喜欢

同号输入土样
灌区渠道基土工程水敏性试验研究
柠檬酸对改良紫色土中老化铜的淋洗研究
有声叙事征稿
膨胀土干湿交替作用下残余强度试验方案分析
分式函数最值的多种求法
“四环节”下的牛津英语课堂模式
微篇商务英语阅读教学模式探索
浅议习得理论下初中英语教学的策略调整
高中英语阅读与写作有效结合
数学解题中“+”“—”的巧用