在进销存管理中,最难、最复杂的一个工作就是根据销售数量,用先进先出法计算销售成本。这不,兰色在设计《Excel进销存系统》时就遇到了这个棘手的难题:
如下图所示在销售表中根据出库数量计算成本金额。
先跟兰色一起了解先进先出的计算原理。
先进先出:就是先入库的产品先出库,计算成本价时优先。
【例】如下图所示,A产品先后入库3个批次,每次的价格都不同。
情形一,A产品第一次销售20个,因为A的第1批进了50个,所以可以全部按该批次的价格算成本,成本应为:
=20*2=40
情形二,A产品第一次销售51个,那么第一批进的不够用,所以要从第二批拿出一个算成本。成本总额为:
50*2+1*5=104
情形三:A产品第一次销售70个,前两批都不够用,所以得从第三批中拿出10个算成本。
=50*2+10*4+10*9=230
情形4:A产品后续又销售了5个,因为前面已把前2批货卖完了,所以直接从第3批(价格为9)中拿货并计算成本。
=5*9=45
以后再销售以此类推。
如果你没从事过会计,估计看的有点晕了。这个公式不但要考虑入库表的所有批次价格,而且还要考虑销售表已卖的数量。所以你可以想象用Excel公式来设置有多么的难。如果都用手工,一个几百行的小表也会花费你一天的时间。
为了解决这个,用VBA编写了一个自定义函数。完美解决了先进先出算成本的难题。
=成本(H2,H$1:H2,I$1:I2,J$1:J1,B$2:B$18,C$2:C$18,D$2:D$18)
语法:
成本(商品名称,商品区域,销量区域,已计算成本区域,入库表商品名称,入库表数量区域,入库表单价区域)
参数说明:
商品名称:引用单元格中的商品名称
商品区域:销售表中截止本行之前的商品列2行区域,锁定开始行,如H$1:H2
销量区域:销售表中截止本行之前的销量2行区域
已计算成本区域:输入公式位置的上一个单元格,要用区域的形式录入,如:J$1:J1,
入库表商品名称:入库表中商品名称或商品编号区域(商品的唯一标识)
入库表入库数量区域:入库表中商品入库数量所在列区域
入库表单价区域:入库表中商品单价所在列区域(商品的唯一标识)
如果你也想在自已的excel中使用这个函数,就跟兰色一起操作吧。
第1步 复制下面代码
第2步 打开你的Excel表格,然后通过开发工具-Visual basic打开编辑器,再插入 -模块,然后把代码粘到右侧的窗口里。最后把文件另存为:启用宏的excel工作簿类型。
以后,在这个excel文件里就可以直接使用“成本”函数了。
兰色说:解决先进先出公式是兰色很多年的愿望,但一直手懒没去编写。这次要做进销存管理系统绕不过去了,嘿嘿,只能耐下心搞定它了。
领取专属 10元无门槛券
私享最新 技术干货