洪濤,聞濤,侯興華
[摘要] 為了解決工地現(xiàn)場(chǎng)材料管理臺(tái)賬與供應(yīng)商對(duì)賬的問(wèn)題,本文基于Excel表格設(shè)計(jì)了現(xiàn)場(chǎng)材料臺(tái)賬對(duì)賬表,運(yùn)用VB編制了宏程序,實(shí)現(xiàn)了與材料供應(yīng)商核對(duì)明細(xì)賬的功能。
[關(guān)鍵詞] 現(xiàn)場(chǎng)材料臺(tái)賬對(duì)賬表;宏;Excel表格
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 10. 008
[中圖分類(lèi)號(hào)]F275[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673 - 0194(2012)10- 0015- 03
在工程材料現(xiàn)場(chǎng)管理中,核對(duì)材料臺(tái)賬是一個(gè)很繁瑣的事情,特別是在材料種類(lèi)繁多且用量很大的情況下,現(xiàn)場(chǎng)核對(duì)耗時(shí)耗力。Excel作為一種常用的辦公軟件,其功能被很多人所熟悉,通過(guò)進(jìn)一步的開(kāi)發(fā),可以滿(mǎn)足很多數(shù)據(jù)處理的要求。筆者通過(guò)在Excel上應(yīng)用自編的宏程序,實(shí)現(xiàn)了材料管理臺(tái)賬對(duì)賬的功能。
1程序流程圖(圖1)
圖中所指列1、列2數(shù)據(jù)分別為供應(yīng)商材料送貨明細(xì)賬和現(xiàn)場(chǎng)材料管理臺(tái)賬對(duì)應(yīng)數(shù)據(jù)。
2程序內(nèi)容
Sub Macro1()
'————(1)供應(yīng)商出庫(kù)明細(xì) 與 (3)現(xiàn)場(chǎng)入庫(kù)明細(xì) 發(fā)生額相同的相互抵消
'———— 確定(1)、(3)列發(fā)生額的筆數(shù),若為0跳到第二項(xiàng)比較
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)列發(fā)生額是否有相同項(xiàng),若有則變成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
'————?jiǎng)h除發(fā)生額為0的項(xiàng)
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:
'————完成第一次比較,繼續(xù)第二次比較
'————(2)退回供應(yīng)商材料明細(xì)與(4)現(xiàn)場(chǎng)材料退回明細(xì) 發(fā)生額相同的相互抵消
'————確定(2)、(4)列發(fā)生額的筆數(shù),若為0結(jié)束程序
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)列發(fā)生額是否有相同項(xiàng),若有則變成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
'————?jiǎng)h除發(fā)生額為0的項(xiàng)
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實(shí)施步驟
(1)Excel新建表格中建立現(xiàn)場(chǎng)材料管理對(duì)賬單(如圖2)。
(2)分別填入供應(yīng)商供貨明細(xì)和現(xiàn)場(chǎng)材料臺(tái)賬中的發(fā)生額,注意不要有空項(xiàng)并統(tǒng)一雙方材料種類(lèi)名稱(chēng),合計(jì)行(行14)前一行要空白。
(3)運(yùn)行宏程序Macro1,自動(dòng)生成對(duì)賬結(jié)果,L20=0。
4應(yīng)用效果
該程序預(yù)期達(dá)到了的效果,經(jīng)使用準(zhǔn)確率達(dá)到100%,大大節(jié)約了和供應(yīng)商對(duì)賬的時(shí)間,提高了工作效率。另外,該程序是基于Excel表格開(kāi)發(fā)的,簡(jiǎn)便易操作,實(shí)用性很強(qiáng)。
主要參考文獻(xiàn)
[1]Steven M Hansen.Excel 2003與VBA編程從入門(mén)到精通[M].北京:電子工業(yè)出版社,2004.
[2]John Walkenbach.Excel 2003高級(jí)VBA編程寶典[M].北京:電子工業(yè)出版社,2005.