使用EXCEL编制国际工程报价及其适用性
摘要
本文通过介绍使用EXCEL函数和VBA编制国际工程报价的过程,展现了使用EXCEL能实现快速有效地编制国际工程报价。所介绍的编制办法适应不同国别、不同项目的报价要求,有较强的兼容性,对提高企业在国际工程中的报价编制水平有一定的帮助作用。
一、前言
在国际工程的报价编制中,国际工程客观存在的属地性,及各项目对报价输出内容和格式有不同要求,使得一般满足国内招投标要求的专业预算软件不太适合国际工程的投标报价工作。
Excel计算功能强大,数据处理灵活,采用EXCEL能很好地解决不同条件下的数据计算处理问题,满足快速编制国际工程报价的需要。报价编制的实质是,对数字化的成本因素进行计算、归并、查询、汇总等处理,得到编制所需的费用和消耗量等数据成果。计算、归并、查询、汇总等数据处理任务,均按照一定逻辑,利用EXCEL函数和VBA实现。
二、国际工程报价编制的不同特点
与国内工程比较,国际工程报价有其不同,其差异主要表现在如下几方面:1)采用工程量清单报价。
国际工程一般采用工程量清单报价,所报单价为综合单价。各项目的工程量清单在形式上差不多,但内容上往往有差异。
2)费用组成上有差异。
与国内工程的费用组成不同,国际工程一般将安全文明施工措施费,临时设施费,保险、保函费用,人员进退场费,设备动员费,开办费,风险金,总部管理费等都计入间接费,并将这些费用反摊到直接费中。
3)标准和要求不一样,计算方式不同。
安全及文明施工措施,临时设施等,因项目要求不同,现场条件有较大差异,需根据实际情况计算,而非参照一定标准取点计算。
4)取费计算不同
规费和税费有其属地性,不同国家的规费和税费所包含的内容、计算基数和费率有所不同。
国际工程与国内工程之间存在的报价差异,以及各个工程项目的属地性,使得为通用条件而生的通用预算软件很难完全满足国际工程项目报价要求。大多数编制人员在进行国际工程报价编制时,采取折中办法,使用通用的专业软件计算
直接费后,再利用EXCEL 加工处理从通用软件中导出的基础数据,完成编制任务。
而EXCEL 既可作为计算工具,也有存放数据的功能,并且可以通过VBA 读取其它文件数据,其数据处理和存放的灵活性,能很好地解决国际工程报价存在的差异化问题,满足国际工程报价的编制要求。
三、 采用EXCEL 编制报价的编制流程和基础数据准备
报价编制是依据企业适用定额,基于工料机预算价、项目调查和实施方案,借助分析测算工具,专业预算软件或EXCEL 类计算软件等,采用计算分析、汇总等方式形成费用表单和其它需求成果的过程。在进行报价编制时,需先理清编制思路,做好定额和工料机预算价等基础数据的准备工作。
1. 编制流程
报价编制工作大致可分为准备、报价编制、编制成果输出三个阶段。准备阶段包括定额准备、基础单价分析和相关招标文件准备等内容;报价编制工作包括直接费的分析和间接费计算;编制成果输出是在报价编制的基础上,将编制计算数据归并、链接、汇总到成果输出表中。报价编制流程如下:
除定额数据单独用一个EXCEL 工作簿存放外,其它计算和数据存放都在同一报价编制工作薄下完成。
2. 定额准备
建立EXCEL 工作簿,将报价编制所需的定额数据存放到工作表中,作为报价编制的定额数据库。数据库存放的定额为企业适用定额,数据来源于部委和地方发布定额,或企业标准。按数据库格式建立EXCEL 表头,表头包括定额号、内容、单位、电算号(工料机)、消耗量及说明等字段内容。定额数据可通过数据导入,人工输入等方式建立。
在设置定额号和电算号(工料机)时,要考虑其可读性,唯一性,及报价编制过程中数据使用的便捷性。定额号保持与原定额一致;考虑到分类统计工料机费用的需要,可在原定额工料机的电算号之前增加前缀,人工前缀为L,材料为M,机械台班为E。
机械台班定额要求的存储空间不大,为使用方便,将其存放在报价编制工作薄中,单独建立工作表用于存放台班定额和分析台班单价。
3.分析基础单价
报价编制的基础单价分析包括人工单价、材料单价、自采材料单价、机械台班价、自发电价等。把不同问题归集到不同的表单进行分析,然后再将所有的单价分析结果汇总到“工料机汇总”表中,便于数据链接和读取。
根据调查资料和属地条件分析人工和材料预算单价。人工单价要考虑工资、社保、伙食、劳保、交通费、当地工用工比和工效、各类补贴(若有)等内容;材料单价包含材料原价、运杂费、港口费、清关和关税、场外运输损耗、采购及保管费用等。
施工机械台班单价由不变费用和可变费用组成。不变费用,包括折旧、大修理费、经常修理费、安装拆卸及辅助设施费等,为满足不同地区、不同项目编制要求,在机械台班计算表中可增加几列,用于存放修正系数,这样,可结合实际,合理调整项目的折旧、大修、经常修理和安拆费,更好地反映项目实际情况。可变费用,包括机上人员人工费、动力燃料费、养路费及车船使用税,需结合项目实际调整。
在水、电、运费、砂石料、取土等需单独分析时,须按项目实施方案计算。
新建“工料机汇总”表,存放上述分析完成的预算单价,作为报价编制的单价库。组合使用index()和match(),建立“工料机汇总”表与各预算单价表之间的数据链接。
4.投标报价文件的准备
导入招标文件工程数量清单,整理形成工程数量清单报价表。工程量清单报价表包括BOQ项的编号、名称、单位、数量、单价和合价。单价和合价有人工、材料、设备、直接费、间接费和小计六个子项。
按招标文件要求,新建单价分析表。
按招标文件要求,建立调价因子权重计算表。
四、直接费的计算
直接费计算,是在新建工作表中导入工程数量清单内容,然后根据BOQ项的组成工序从定额数据库中读取定额数据至表中,并在此基础上对数据进行计算、汇总,从而得到BOQ项的直接费和相关工料机消耗数据的过程。
1.新建“直接费计算”表,将清单内容导入到新建表中。
“直接费计算”表头结构形式如下:
将清单报价表中的清单内容导入到直接费计算表,清单报价表和直接费计算表之间通过BOQ号建立数据链接。在直接费计算表中,将清单报价表中的BOQ 号拷贝到直接费计算表中对应位置,然后用index()将BOQ工作内容、单位、数量链接到表中。导入清单内容后的截图如下:
2.利用VBA将定额数据导入到直接费计算表中。
利用VBA,从读入界面读取定额号和定额类型,根据定额类型确定定额库文件,然后从定额库文件中读取定额内容。宏读取的定额数据在光标所在行的下一行,或者光标所在区域对应工序的下一行插入。
从定额数据库中读取定额内容的语句如下:
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended properties=Excel 8.0;Data Source='" & Bookname & "'"
cnn.Open
sheet_str = "select * FROM [" &  "定额" & "$] Where 定额号 = '" & quota_code & "'"
rst.CursorType = 3
rst.LockType = 1
rst.Open sheet_str, cnn, adOpenStatic
k = rst.RecordCount
语句中的Bookname是根据读入界面读取的定额类型而确定的工作簿名,quota_code为从读入界面读取的定额号。
将读取数据写入到直接费计算表的语句如下:
.Rows(startrow).Resize(k).Insert
endrow = startrow + (k) - 1
.Range(Cells(startrow, 2), Cells(endrow, 6)).CopyFromRecordset rst rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
.Range(Cells(startrow, 5), Cells(endrow, 6)).Copy
.Range(Cells(startrow, 6), .Cells(endrow, 7)).PasteSpecial
Paste:=xlPasteValues
.Range(Cells(startrow, 1), Cells(endrow, 1))= boq_quota
如下截图为读入界面,及将定额数据读入到直接费计算表后的结果:
3.用VBA输入公式,自动计算和汇总直接费。
1)规范A列编号
规范A列编号,以便能分类汇总BOQ项及其项下各工序的工费、料费和机械费。BOQ项下各组成工序的A列编号统一为“BOQ号﹟定额号﹟”,用VBA读取定额号及光标所在区域的BOQ号,并将“BOQ﹟定额号﹟”输入到直接费计算表。
2)其它数据的读取及计算
“预算单价”的数据从“工料机汇总”表读取。用index()函数,通过工料机电算号,链接“工料机汇总”表中的预算单价数据。
“合价”为预算消耗和预算单价乘积;“消耗汇总”为定额单位的数量乘以预算消耗。
3)直接费计算
✧计算BOQ项下各工序的工费、料费和机械单价。
用sumifs()汇总J列满足条件的工费、料费和机械费。工费= Sumifs(合价汇总区域,条件1:A列=“BOQ号﹟定额号﹟”,条件2:F列电算号前缀为L)。材料和机械的采用同样办法计算。
举例,第8行对应工序的工费计算为:sumifs(J9:J30,A9:A30,A8,F9:F30,"=L*")。
✧计算BOQ项的工费、料费和机械费单价。
用sumproduct()计算汇总。工费单价=Sumproduct((A列是否为BOQ项下的工序)*(E列,工序数量)*(L列,工序的工费单价)) /BOQ项数量。材料和机械费采用同样办法计算。
举例,第7行BOQ项的工费计算式为:
sumifs函数的使用方法多条件