发票自动凑数.docx
《发票自动凑数.docx》由会员分享,可在线阅读,更多相关《发票自动凑数.docx(13页珍藏版)》请在冰豆网上搜索。
发票自动凑数
发票凑数
如果你是会计,是否曾遇到过需要在一大堆发票中凑出某一金额的发票数值来,通过人脑去凑数字真的是一件痛苦的事情,而且计算过程往往要耗费很长的时间,工作效率低下,这里提供一个快速凑发票金额的方法:
1、打开Excel表格,按下图所示填写内容,其中B列为现实中你所拥有的实际发票单张面额,需求值为你需要凑出的金额,这里用1000示例,误差为你允许的金额误差,这里用误差为零,即我们需要凑出1000元整的金额。
2、点击开发工具,点击VisualBasic按钮,打开VBA编辑窗口,
3、右键点击左侧工程栏点击插入,模块,新建模块1
4、点击模块1,将以下代码复制粘贴进右侧代码编辑栏
SubMP()
Sheet1.Range("E2")=""
DimcshAsDouble
Dimbrr()AsDouble
DimSSAsInteger
DimMMAsInteger
DimHHAsInteger
SS=Second(Time)
MM=Minute(Time)
HH=Hour(Time)
DimdiffAsDouble
diff=Sheet1.Cells(2,4)
DimzociAsDouble
DimciAsInteger
DimDeVaAsDouble
DimWeibaAsInteger
DeVa=Sheet1.Cells(2,3)
DimjarAsDouble
Dimarr()AsDouble
DimtotAsDouble
zoci=0
ci=0
jar=0
Weiba=Sheet1.Cells(3000,2).End(xlUp).Row
ReDimarr(2ToWeiba)
ReDimbrr(1ToWeiba)
DimMaVaAsDouble
DimSeLaVaAsDouble
brr
(1)=0
Fori=2ToWeiba
arr(i)=Sheet1.Cells(i,2)
brr(i)=arr(i)
Next
Fori=2ToWeiba-1
Forp=i+1ToWeiba
Ifbrr(i)>brr(p)Then
csh=brr(i)
brr(i)=brr(p)
brr(p)=csh
EndIf
Next
Next
Fori=2ToWeiba
Sheet1.Cells(i,2)=brr(Weiba+2-i)
Next
Fori=1ToWeiba
tot=tot+brr(i)
Next
Fori=2ToWeiba
MaVa=MaVa+brr(i)
Next
SeLaVa=MaVa-brr
(2)
If(DeVa>=brr
(2)AndDeVa<=SeLaVa)OrDeVa=MaVaThen
CallSB(DeVa,Weiba,2,jar,ci,zoci,diff,arr(),brr(),tot)
Else
MsgBox"金额超限啦!
请更改需求值或添加发票!
"
EndIf
Debug.Print"耗时:
"&Second(Time)-SS+(Minute(Time)-MM)*60+(Hour(Time)-HH)*3600&"秒"
EndSub
SubSB(DeVaAsDouble,WeibaAsInteger,xAsInteger,jarAsDouble,ciAsInteger,zociAsDouble,diffAsDouble,arr()AsDouble,brr()AsDouble,totAsDouble)
DimcaobAsDouble
StaticcaommAsInteger
Fori=xToWeiba
ci=ci+1
zoci=zoci+1
jar=jar+arr(i)
Sheet1.Cells(i,2).Interior.ColorIndex=42
'Debug.Printzoci&"层次="&ci&""&"i="&i&""&"上一个jar="&jar-Sheet1.Cells(i,2),"jar="&jar
Ifjar<=DeVa+diffAndjar>=DeVa-diffThen
Sheet1.Cells(2,5)=jar
ExitSub
EndIf
IfjarIfjar<=DeVa+diffAndjar>=DeVa-diffThen
Sheet1.Cells(2,5)=jar
ExitFor
EndIf
Sheet1.Cells(i,2).Interior.ColorIndex=-4142
jar=jar-arr(i)
ci=ci-1
DoEvents
Next
Ifjar=0ThenMsgBox"现有发票无法凑出所需金额,请增加发票数或增加误差值!
"
EndSub
5、点击开发工具,点击插入,点击下拉栏中的按钮标签,在表格中点击插入按钮,并命名为科学计算,如下图所示。
6、右键单击科学计算按钮,点击指定宏。
7、在弹出的指定宏框中选中MP,并点击确定。
8、保存表格,命名为发票凑数,保存类型选择下拉栏里的Excel启用宏的工作薄(*.xlsm)。
9、再次打开发票凑数表格,点击启用内容
10、点击科学计算按钮,蓝色填充部分为参加进凑数计算得发票,按照颜色把实际发票挑出即为你所需要的凑数发票。
建议:
因为科学计算随发票张数的增多,计算量呈指数增加,如果你的电脑配置比较低,请保证参加的发票数量尽量不要多余50张,如果发票数量实在是很多,可以在表格录入单张面额时,两张甚至三张相加当作一张录入到表格里,以减轻计算量。
如果你的Excel表格没有开发工具这一栏,可以按照下图所示添加,点击文件,点击选项,在打开的选项框中,选择自定义功能区,在右侧主选项卡中勾选中开发工具,并点击确定即可。
-----精心整理,希望对您有所帮助!