EXCEL在工程算量中的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EXCEL在工程算量中的应用

作者:朱开运

工程量计算是工程造价的基础,也是造价工作者最为费神的。随着工程量清单计价的全面推行,工程量计算规则将更为细致复杂。所以提高工程算量的工作效率,成了每个造价工作者的美好愿望。

一、常见工程算量方式的介绍

到目前为至,常见的工程算量方式主要有手工算量法、专业软件算量法、传统的EXCEL算量法等。手工算量法相对于另两种方式而言,其计算过程清楚便于对账,但最大的弊端是费时又易出错。专业软件算量法由于少了列式计算的步骤,使不懂造价的人也可方便使用,对于做标底特别方便。但其对细部处理不灵活,价格又高,而且大多只局限于对土建进行算量,对账也不方便。传统的EXCEL算量法,相对于手工算量法准确程度和工作效率大大提高了,但工作量仍较大,对账功能也不及手工算量方便。

表1 工程量计算稿

二、EXCEL算量法的介绍

由于工程算量必须要进行相关各方的多次核对,所以对账功能与高效准确同样重要。本文介绍的算量方式在传统的EXCEL算量法的基础上作了较大的改进,通过增加附注使其具备手工算量的对账优点,同时也比传统的EXCEL算量法更为快捷。该软件的整体工作思路与手工算量法基本一致。

在“工程量计算稿”上的计算式输入(或修改)完成后,计算机通过预设的VBA程序计算出工程量并保存在相应的“工程量”单元格中(如表1)。当全部工程量计算完成后,单击“工程量汇总” 表左上方的“工程量汇总”命令按钮,计算机按照预设的VBA程序对“工程量计算稿”表中的工程量按清单项目号进行汇总并排序(如表2)。通过以上两大功能确保了EXCEL算量软件的高效准确性。

表2 工程量汇总表

三、软件设计中的技术要点剖析

要实现以上功能必须解决好以下几个技术要点:附注的分离及表达式自动计算,工程量按“项目编号”

汇总及排序。

1、附注的分离及表达式自动计算

在计算式中添加附注是本软件的一大特色,可以方便我们对账。但我们知道EXCEL只能对数字进行运算,于是必须对计算式中的附注进行分离。如表1所示,我们将附注均写在“[ ]”内,于是问题便转化为对“[ ]”中的内容进行分离。当计算式输入(或修改)完成后,VBA程序即对表达式中的字符进行逐一识别,将非“[ ]”中的内容通过函数(1)逐一添加到中间变量Q中。

Q=Q&Mid(X,I,1) (1)

式中:X为计算式,函数Mid(X,I,1)为提取X中的第I个字符。

同时我们知道EXCLE只对“=”开始的数学表达式进行运算,而无法对分离出来的表达式无法进行,于

是我们引入了函数(2)。

FL=Application Evaluate (“(” & Q & ”)”)(2)

式中:FL为表达式的计算结果,函数Evaluate()为取值函数。

自动计算是是本软件的又一特色,一般的EXCEL算量法都要通过对“计算式”后的单元格逐一引用函数,这样做既增加操作时间又容易忘记。为此预设的VBA程序,在“计算式”中的内容一旦发生变化即自动

执行附注分离与表达式取值的过程。

其自动计算的源程序如下:

‘************************************************************************

Private Sub Worksheet_Change(ByVal Target As Range)

X = Target.Row

y = Target.Column

Application.EnableEvents = False

If y = 3 Then

Range("d" & X) = FL(Range("c" & X))

End If

Application.EnableEvents = True

End Sub

‘***********************************************************************

2、工程量按“项目编号” 汇总及排序

工程量按“项目编号” 汇总及排序是本软件的另一特色。“工程量计算稿”是按分部分项工程计算的,工程量计算完成后我们要把相同类进行汇总。根据《建设工程工程量清单计价规范》,相同的项目具有相同

的项目编号,这就为工程量汇总带来了便利。

在汇总时对“工程量计算稿”中的“项目编号”在“工程量汇总表”中进行搜索看是否出现过。若未出现过则将相关参数依次输入第一个空白行中,并将对应的分部分项名称作为附注(套上“[ ]”后)添加在“汇总式”的最后一个数字后。若已出现过则仅将“+”及分部分项的工程量、对应的分部分项名称(注套上“[ ]”后)添加在相应的单元格后,如表2所示。汇总后按项目编号对所有参数进行重新排序。而实际上以上步骤是一

气呵成的。

其源程序如下:

‘*******************************************************************************************

***

With Worksheets("工程量计算稿")

nRow = .Range("a65536").End(xlUp).Row

For i = 3 To nRow

If Len(.Range("c" & i)) = 0 Then

cCeng = "[" & .Range("a" & i) & "]"

Else

cXiang = .Range("a" & i)

Set c = Worksheets("工程量汇总表").Range("a:a").Find(cXiang, LookIn:=xlValues)

If c Is Nothing Then

Set c = Worksheets("工程量汇总表").Range("a65536").End(xlUp).Offset(1, 0)

c.Value = cXiang

c.Offset(0, 1) = .Range("b" & i)

c.Offset(0, 2) = .Range("d" & i) & cCeng

c.Offset(0, 4) = .Range("e" & i)

Else

c.Offset(0, 2) = c.Offset(0, 2) & "+" & .Range("d" & i) & cCeng

End If

c.Offset(0, 3) = c.Offset(0, 3) + .Range("d" & i)

End If

Next

End With

‘注:以上程序的作用为将“工程量计算稿”中相同项目编号的工程量在“工程量汇总表”进行中汇总

Worksheets("工程量汇总").Range("b3:e65536").Sort _

Key1:=Worksheets("工程量汇总").Range("b3")程量汇总").Range("A3")

‘注:以上程序的作用为将汇总后的结果按清单编号进行排序

‘*******************************************************************************************

***

四、尾声

用VBA开发的EXCEL算量软件,经实践证明能较好的解决目前工程算量中存在的问题,是造价者不可多得的算量工具。该软件不仅适用于清单计价模式下的工程量计算,也适用于定额计价模式下的工程量

相关文档
最新文档