洪涛,闻涛,侯兴华
[摘要] 为了解决工地现场材料管理台账与供应商对账的问题,本文基于Excel表格设计了现场材料台账对账表,运用VB编制了宏程序,实现了与材料供应商核对明细账的功能。
[关键词] 现场材料台账对账表;宏;Excel表格
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 10. 008
[中图分类号]F275[文献标识码]A[文章编号]1673 - 0194(2012)10- 0015- 03
在工程材料现场管理中,核对材料台账是一个很繁琐的事情,特别是在材料种类繁多且用量很大的情况下,现场核对耗时耗力。Excel作为一种常用的办公软件,其功能被很多人所熟悉,通过进一步的开发,可以满足很多数据处理的要求。笔者通过在Excel上应用自编的宏程序,实现了材料管理台账对账的功能。
1程序流程图(图1)
图中所指列1、列2数据分别为供应商材料送货明细账和现场材料管理台账对应数据。
2程序内容
Sub Macro1()
'————(1)供应商出库明细 与 (3)现场入库明细 发生额相同的相互抵消
'———— 确定(1)、(3)列发生额的笔数,若为0跳到第二项比较
Lastrow1 = 0
For i = 6 To 3000
If IsEmpty(Range("c" & i).Cells) Then
Exit For
Else
Lastrow1 = Lastrow1 + 1
End If
Next i
If Lastrow1 = 0 Then GoTo number1
Lastrow2 = 0
For i = 6 To 3000
If IsEmpty(Range("I" & i).Cells) Then
Exit For
Else
Lastrow2 = Lastrow2 + 1
End If
Next i
If Lastrow2 = 0 Then GoTo number1
'————判断(1)、(3)列发生额是否有相同项,若有则变成0
For m = 6 To Lastrow1 + 5
same = 0
n = 1
For p = 6 To Lastrow2 + 5
If n <= Lastrow2 And same = 0 Then
If Range("c" & m).Value = Range("I" & p).Value Then
Range("c" & m).Value = 0
Range("I" & p).Value = 0
same = 1
End If
n = n + 1
End If
Next p
Next m
'————删除发生额为0的项
For i = Lastrow1 + 5 To 6 Step -1
If Range("c" & i).Value = 0 Then
Range("A" & i & ":c" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
For i = Lastrow2 + 5 To 6 Step -1
If Range("I" & i).Value = 0 Then
Range("G" & i & ":I" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
number1:
'————完成第一次比较,继续第二次比较
'————(2)退回供应商材料明细与(4)现场材料退回明细 发生额相同的相互抵消
'————确定(2)、(4)列发生额的笔数,若为0结束程序
Lastrow1 = 0
For i = 6 To 3000
If IsEmpty(Range("F" & i).Cells) Then
Exit For
Else
Lastrow1 = Lastrow1 + 1
End If
Next i
If Lastrow1 = 0 Then GoTo number2
Lastrow2 = 0
For i = 6 To 3000
If IsEmpty(Range("L" & i).Cells) Then
Exit For
Else
Lastrow2 = Lastrow2 + 1
End If
Next i
If Lastrow2 = 0 Then GoTo number2
'————判断(2)、(4)列发生额是否有相同项,若有则变成0
For m = 6 To Lastrow1 + 5
same = 0
n = 1
For p = 6 To Lastrow2 + 5
If n <= Lastrow2 And same = 0 Then
If Range("F" & m).Value = Range("L" & p).Value Then
Range("F" & m).Value = 0
Range("L" & p).Value = 0
same = 1
End If
n = n + 1
End If
Next p
Next m
'————删除发生额为0的项
For i = Lastrow1 + 5 To 6 Step -1
If Range("F" & i).Value = 0 Then
Range("D" & i & ":F" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
For i = Lastrow2 + 5 To 6 Step -1
If Range("L" & i).Value = 0 Then
Range("J" & i & ":L" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
Exit Sub
number2:
End Sub
3实施步骤
(1)Excel新建表格中建立现场材料管理对账单(如图2)。
(2)分别填入供应商供货明细和现场材料台账中的发生额,注意不要有空项并统一双方材料种类名称,合计行(行14)前一行要空白。
(3)运行宏程序Macro1,自动生成对账结果,L20=0。
4应用效果
该程序预期达到了的效果,经使用准确率达到100%,大大节约了和供应商对账的时间,提高了工作效率。另外,该程序是基于Excel表格开发的,简便易操作,实用性很强。
主要参考文献
[1]Steven M Hansen.Excel 2003与VBA编程从入门到精通[M].北京:电子工业出版社,2004.
[2]John Walkenbach.Excel 2003高级VBA编程宝典[M].北京:电子工业出版社,2005.