活用Excel和Access的数据库功能──构建工程预算系统

IT商界

  现在各种各样的专业工程预算软件很多,但专业的工程预算软件往往价格昂贵。可不可少花钱也能在预算工作中实现部分专业软件的功能呢?经过摸索,笔者发现利用Excel 2002和Access 2002,即可实现专业工程预算软件的部分智能功能。下面就以本省2001年建筑工程预算定额(土建)为例讲述。需要声明:由于在市场经济条件下,材料、机械等费用价格不断变化,本文所介绍的价格仅供演示之用。当然这种方法还能应用在其他类似行业中。

  一、用Excel建立工程预算表格

  首先启动Excel 2002,建立一个空白文档。单击“Sheet1”将它改名为“预算表”,然后根据本地概预算表格(各个地方的表格可能不太一样)绘制出Excel表格(图1),然后命名“土建预算工作簿”保存。接着我们在“基价合计”一列也就是J4开始定义单元格。选中J4单元格,输入"=E4*F4"(就是基价合计等于基价乘以数量),再回车。选中K4单元格,输入"=E4*G4"(人工费合计等于人工费单价乘以数量),回车。选中L4单元格,输入"=E4*H4"(材料费合计等于材料费单价乘以数量),回车。再选中M4单元格,输入"=E4*I4"(机械费合计等于机械费单价乘以数量),回车。输入完毕后,分别选中J4、K4、L4、M4单元格,按住填充柄向下拖动复制单元格公式(根据需要多少行拖动)。

  二、用Access建立工程定额数据库

  启动Access 2002,创建一个空白数据库,命名为“db2”,在弹出的对话框中,选择“表→使用设计器创建表”。双击使用设计器创建表,在打开的数据库设计视图的“字段名称”第一行中输入“定额号”,点击“数据类型”列中的下拉菜单,选择“文本”。

  在“字段名称”第二行中输入“分项工程说明”,在“数据类型”下拉菜单中选择“文本”。

  在“字段名称”第三行中输入“单位”,在“数据类型”下拉菜单中选择“文本”。

  在“字段名称”第四行中输入“数量”,在“数据类型”下拉菜单中选择“文本”。

  在“字段名称”第五行中输入“基价”,在“数据类型”下拉菜单中选择“数字”,同时点击下面常规标签的“字段大小”下拉菜单,选择“双精度型”,“格式”项选择“常规数字”,“小数位数”选择“2”,其他用默认格式。

  在“字段名称”第六行中输入“人工费单价”,在“数据类型”下拉菜单中选择“数字”,其他选择同字段第五行的“基价”选择。

  在“字段名称”第七行中输入“材料费单价”,在“数据类型”下拉菜单中选择“数字”,其他选择同字段第五行的“基价”选择。

  在“字段名称”第八行中输入“机械费单价”,在“数据类型”下拉菜单中选择“数字”,其他选择同字段第五行的“基价”选择。

  输入完毕后,将“定额号”一行设为主键,然后选择保存,命名为“土建定额数据库”(图2)。将数据库设计视图关闭,返回弹出的对话框,这时会发现你刚才设计的视图“土建定额数据库”已经在上面了。双击打开它,这是一个数据库的雏形,还需要我们输入数据来完善它。这里笔者选择了2001土建定额中第一章“土石方工程”的“1-124”、“1-125”、“1-126”、“1-127”工程分项和第四章“砌筑工程”的“4-1”、“4-2”、“4-3”、“4-4”工程分项几个项目,举例代表全部定额数据库。为了方便查询每章的标题,我们将“1”定义为“土石方工程”,将“4”定义为“砌筑工程”,其他章节标题依此类推。当然了,逐一输入全部定额数据是很辛苦的,这也是免费的代价吧。将上述举例的定额号、分项工程说明、单位、数量、单价等一一输入到对应的列中,注意“数量”一列为空,不输入任何数据,输入完毕后如图3。

  三、设计数据库查询

  启动Access 2002,打开我们刚才建立的“db2”文件。在弹出的对话框中选择“查询”,双击“在视图中创建查询”,弹出查询窗口。在“显示表”对话框中的“表”标签中,选中“土建定额数据库”,单击添加按钮后将它关闭。在查询窗口中点击刚才添加的“土建定额数据库”,将其中的定额号、分项工程说明、单位、数量、基价、人工费单价、材料费单价、机械费单价等项一一双击添加到字段中。

  假如我们要编制一份土建预算文件,在这份文件中,我们将计算出的工程分项值对照土建定额逐一查出它们的定额号,举例是“1-125”、“1-127”、“4-1”和“4-3”。在我们刚才创建的查询窗口中点击“条件”行,首先键入“1”查询标题,在紧接这行的下面一行键入定额号“1-125”,回车。依此类推将定额号“1-127”、“4”、“4-1”和“4-3”依次输入,点击保存,将它命名为“查询1”。为了方便检查,我们可以点击窗口下的“查询”→“运行”来看看查询结果是否正确。做好数据库查询后,我们就可以返回刚才创建好的Excel预算表格中。

  四、数据的导入

  启动前面做好的“土建预算工作簿”。将表格标题栏的说明中的“定额号”、“分项工程说明”、“单位”、“数量”、“基价”、“人工费单位”、“材料费单价”、“机械费单价”等8项全部删除,这样做是为了在导入Access数据库的数据时不发生重复。点击菜单“数据”→“导入外部数据”→“新建数据库查询”,在弹出的“选择数据源”对话框中点击“数据库”标签,选中“MS Access Database*”一项,单击“确定”。在弹出的“选择数据库”对话框中,选中上面建立的“db2”数据库,单击“确定”。在“查询向导/选择列”对话框中,将刚才保存命名为“查询1”的文件展开,如图4。

  选中左侧展开的“定额号”,单击中间的“>”按钮,将“定额号”添加到右侧的空白栏中。随后依次将“分项工程说明”、“单位”、“数量”、“基价”、“人工费单价”、“材料费单价”、“机械费单价”添加到右侧的空白栏中。注意不要将上述的几项顺序颠倒,否则在将数据导出到表格中会发生混淆。如果不小心把顺序颠倒了,可以点击右侧的上下箭头来调整顺序。添加完毕后可以点击“下一步”,由于采用默认选择,可以连续点击“下一步”,直到出现“完成”按钮,我们也可以将这个查询保存以便今后使用。

  点击“完成”按钮后,会弹出“导入数据”对话框。选择现有工作表,然后在底下黑色的单元格选择框中将预算表的“B3”单元格(也就是输入“定额号”后被删除的单元格)选中,单击底下“属性”按钮,将“调整列宽”勾选。按下“确定”返回“导入数据”对话框后,再按下“确定”按钮,经过几秒钟处理后我们所查询的定额项都已被完整地导入到Excel 2002表格中(图5),经过简单处理即可使用。

  我们将计算好的各个定额分项的数值依次输入“数量”列中,再看看后面的各项合计值是不是都已自动计算出来了。使用过Excel的朋友都知道,在对一列数值用自动求和时所得出的数值常与我们用手工计算得出的数值不一致。这是因为我们虽然自定义了Excel的小数位数,但是Excel在计算时还是使用系统默认的小数位数,使我们的计算出现误差。在这种情况下我们可以使用Excel的ROUND函数对我们求得的各项数值进行四舍五入(ROUND函数的用法请见本期B12版《Excel函数乐园》),以得到我们想要的结果。

  五、材料的换算

  以上导入的定额数据是没经过修改的,但在实际工作中,由于在市场经济条件下,材料价格经常会发生变化,这就涉及到了材料价格换算的问题。做过预算的朋友都知道,在没有专业预算软件的情况下来换算各种材料价格,会很麻烦。这里我们可以自己做一个材料换算表。

  还是启动刚才完成的“土建预算工作簿”,单击“Sheet2”,将它重命名为“材料价格表”。以输入数据库的几项定额为例,我们参考定额书中材料表的样式来做出一份价格表(图6)。因为预算中的“基价=人工费单价+材料费单价+机械费单价”,我们可以在“材料价格表”的材料价格后输入公式。举例如下:单击“材料价格表”的“J6”单元格(图6),输入公式="B6*C6+D6*F6+G6*I6",回车,然后拖动填充柄向下复制公式,其余依此类推。

  假如我们想要换算预算表中的“4-1 、砖基础”一项材料中的“水泥砂浆M5”的价格。首先在“材料价格表”中单击A12单元格(就是第四章砌筑工程的定额号),然后单击菜单“数据→筛选→自动筛选”,单击“定额号”中的下拉菜单,选中“4-1”(图7),再选中“水泥砂浆M5”单元格,将下面的价格“162.830”改为我们想要换算的水泥砂浆价格,比如“185.345”,回车后,在P14单元格中得到计算结果“1476.66”,然后选中P14单元格,单击“复制”,返回到“预算表”中。选中“4-1”行中的“基价”下面的F8单元格,点击右键,选择“粘贴”,在“粘贴”中的下拉菜单,选择“链接单元格”,这样以后就与“材料价格表”中的数据保持链接,可以随时更新了。