正则匹配开发函数在工程量计算中的应用.doc

上传人:99****p 文档编号:1752549 上传时间:2019-03-14 格式:DOC 页数:5 大小:26KB
下载 相关 举报
正则匹配开发函数在工程量计算中的应用.doc_第1页
第1页 / 共5页
正则匹配开发函数在工程量计算中的应用.doc_第2页
第2页 / 共5页
正则匹配开发函数在工程量计算中的应用.doc_第3页
第3页 / 共5页
正则匹配开发函数在工程量计算中的应用.doc_第4页
第4页 / 共5页
正则匹配开发函数在工程量计算中的应用.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、正则匹配开发函数在工程量计算中的应用摘要:为了利用工程量清单中的工程量计算公式方便快速地得到工程量计算结果,文章在 Excel 中开发函数,采用正则匹配算法处理数据,完成插入函数即可使计算公式表达式转化为计算结果,为类似工程量计算公式的转化提供了可借鉴的经验。 关键词:正则表达式;正则匹配;函数开发;Excel 中图分类号:O174 文献标识码: A 文章编号: 0 引言 工程量清单是工程投资计算的基础,工程量清单计算底稿更是工程存档的重要资料,如何合理利用工程量清单中的计算公式快速方便地计算出工程量是工程设计人员一直以来关心的课题。文中利用正则匹配算法处理数据,在 Excel 中开发函数,以

2、实现工程量计算公式表达式转化为计算结果的效果。文章中以水利工程为例阐述主流的两类工程量计算公式的转化方法,为各类工程的工程量计算公式转化提供了可借鉴的经验。 现阶段工程量清单的状况 工程量清单底稿制度是建设工程的一项基本制度,旨在为工程量计算结果提供明确依据。纵观现阶段工程量清单的计算过程,大多数工程设计人员仍然采用手动添加等号抑或从网络上下载他人计算模板的方式来完成计算公式向公式计算结果的转化。然而,前者重复操作次数多、速度慢、效率低,且遇到有文字说明的计算公式就出现错误;后者虽适当避免了前者的缺点,可是模板的模式固定不可调整、适用性差,且用户对模板的后台运行模式全然不知,很容易出现出现了错

3、误而不自知的情况,十分危险。鉴于以上原因,开发一款操作方便、适用性广、运行模式为用户掌握的工程量转化程序是十分必要的。文章采用正则配方法开发函数编写程序,完成公式向其计算结果的转化。 正则表达式匹配算法 正则表达式英文名为 Regular Expression,是一种描述字符串结构模式的形式化表达方法,通常用于搜索和替换符合某个模式的文本内容1。正则匹配算法即利用正则表达式的匹配模式参数(Pattern)实现提取、替换或获取符合目标模式的文本内容的算法。 正则表达式的应用十分广泛,通常从杂乱的语句中获取 E-mail 地址、汇总含非数字字符的数据、删除重复字符等普通搜索替换完成不了的工作,正则

4、表达式都可以顺利完成。在 VBA 中引用正则表达式转化工程量计算公式也是汇总含非数字字符数据应用的一种。 设计开发函数 2.1 开发函数实现工程量计算公式转化为计算结果 水利工程量计算公式分为两种,即纯计算公式(计算式一)和带标注性文字的计算公式(计算式二)两种,如下所示: 0.24*(0.4-0.06)*2.76*4*4 (计算式一) 0.64宽*0.15厚*(1.5-0.24)长*4面*10个同上 (计算式二) 对于纯计算公式而言,我们可以利用 VBA 语言在 Excel 中开发一般函数(如 Eva 函数) ,而对于带有标注性文字的计算公式普通的 VBA 语言却无能为力,可是正则匹配方法却

5、可以解决这个难题。 正则表达式英文名为 Regular Expression,是一种描述字符串结构模式的形式化表达方法,通常用于搜索和替换符合某个模式的文本内容7。正则匹配算法即利用正则表达式的匹配模式参数(Pattern)实现提取、替换或获取符合目标模式的文本内容的算法。 正则表达式的应用十分广泛,通常从杂乱的语句中获取 E-mail 地址、汇总含非数字字符的数据、删除重复字符等普通搜索替换完成不了的工作,正则表达式都可以顺利完成。在 VBA 中引用正则表达式转化工程量计算公式也是汇总含非数字字符数据应用的一种。 2.2 正则计算函数代码设计 打开工程量清单,同时按 Alt+F11 键调出

6、Visual Basic 编辑器,单击插入 / 模块命令则新建一个空的全局模块(模块 1) ,双击工程资源管理器中的模块 1 ,输入以下代码(代码 code1): Function 正则计算(rng As Range) Application.Volatile设置强制性计算 Dim str As String 定义 str 为字符串变量 Dim regExp As Object 定义 regExp 为对象变量 Set regExp = CreateObject(“VBSCRIPT.REGEXP“)创建正则表达式引用对象 If Len(rng) = 0 Then判断 rng 是否为空 正则计算

7、= “若 rng 为空则赋空值给函数正则表达式 Else 若 rng 不为空则对正则对象进行匹配设计 With regExp .Pattern = “.*?“ 设置正则匹配规则 .Global = True 设置匹配为全局的 str = .Replace(rng.Text, “) 将匹配结果替换为空 End With 正则计算 = Round(Application.Evaluate(str), 2) End If End Function 本段代码(代码 code1)中,首先用 set 语句创建对正则表达式的引用,其次对 rng 对象进行是否为空的判断,如果不为空则进行正则匹配,匹配公式“.

8、Pattern = “.*?“”的含义是匹配中括号及其内的所有字符,如果公式中不含中括号和文字性说明(如计算式一) ,则跳过匹配,将计算式赋值给 str 并进行下一步计算;如果含(如计算式二) ,则将中括号和其内的文字删除(即删除宽、厚 、长 、面和个同上) ,则剩下的字符就是就是纯计算公式 str:0.64*0.15*(1.5-0.24)*4*10。最后用 Evaluate 方法将 str 转化为计算结果,同时用 Round 函数将计算结果保留到两位小数。 2.3 正则计算函数在水里工程量清单中的应用 在单元格D4、D5中分别输入公式一和公式二,选择E4单元格,单击插入函数,在弹出的对话框中

9、“或选择类别(C):”下拉菜单中选择“全部” ,然后在“选择函数(N):”列表框中拨动滚动条则可以找到(代码 code1)中新建的函数“正则计算” ,选择它并单击确定,在弹出的“函数参数”对话框中选择 rng 参数为单元格D4,单击确定,则E4中即计算出单元格D4中计算公式的结果 3.6。在E5内同样填充“正则计算”公式,则计算式二的计算结果 4.84 也显示在单元格中。 由上述操作效果来看,正则计算函数对于纯计算公式的计算和含有文字说明的数据计算都是非常有效的。这里必须强调一下,正则表达式用于在杂乱语句中搜索和替换符合某个模式的文本内容,在上述水利工程量清单示例中即为匹配中括号及其中的字符;如果目标字符串没有任何规则和模式可循,那么正则表达式对其也是无能为力的。 3 结语 正则匹配方法开发函数将工程量计算式转化为计算结果是有效的,它不仅适用于纯计算公式也适用于含有文字说明的计算模式。正则匹配函数的计算效果和应用广泛性都令人满意,为各类工程量计算公式的转化提供了可借鉴的经验。 参考文献 1 罗刚君.ExcelVBA 程序开发自学宝典(第 2 版).北京:电子工业出版社,2011.8 作者简介 田林钢,男,生于 1968,河南郑州人,华北水利水电学院教授级高工,研究方向:工程造价管理,水工结构,工程风险管理。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。