ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7337|回复: 18

[分享] 进销存管理(移动加权法)纯excel的VBA (ado+字典)-有注释

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-7-28 14:47 | 显示全部楼层 |阅读模式
对于喜欢用3张表来记库存的朋友来说,本表格可以借鉴一下儿(当然专业的软件里其实就是一张收发存表来解决)。原先看到的用exce解决移动加权问题的,很多都是遍历,代码很长。--至于进销存汇总表,在这里就很简单了。各人自己写个Sql就可以搞定了(用sum,group by 一下儿)。
只用sql

[ 本帖最后由 gjj136138139 于 2011-7-29 09:49 编辑 ]

移动加权结转成本.rar

16.17 KB, 下载次数: 483

移动加权结转成本(sql).rar

19.22 KB, 下载次数: 375

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-28 14:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
前提条件是:一个产品不能有负库存(出库时要有库存),最重要的就是入库时要填上单价。不然有被0除的错误,代码就运行有误(未提供容错代码),只是简单的循环。当然对于大数据量,可能效率也不高。在此只是作为大家借鉴。有觉得好的,可以的,一定要回复哦,大家共同学习。

TA的精华主题

TA的得分主题

发表于 2011-7-28 17:24 | 显示全部楼层
谢谢分享,不懂财务,不知道后面两列(结存数量、成本单价)是什么意思,建议这两列也用Sql或使用数组以加快运行速度

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-28 18:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sql功底太差,想了很久也没想出来,最后只好弄个循环来解决。如果是纯sql写出来的话,当然最好了。期待有sql高手来一次性解决这个问题。相对于先进先出来讲,移动加权在sql语句上可能是最简单的一种了。每进货一次,成本变动一次。按时间先后来就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-28 19:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有帮助。差不多是先进先出法的那个意思,对sql语句还是很有帮助的。谢谢版主了。

TA的精华主题

TA的得分主题

发表于 2011-7-28 19:05 | 显示全部楼层
原帖由 gjj136138139 于 2011-7-28 18:48 发表
sql功底太差,想了很久也没想出来,最后只好弄个循环来解决。如果是纯sql写出来的话,当然最好了。期待有sql高手来一次性解决这个问题。相对于先进先出来讲,移动加权在sql语句上可能是最简单的一种了。每进货一次, ...

我不理解后面两列是怎么回事儿,前几天我写了一个与时间先后有关的,看看有没有帮助:
http://club.excelhome.net/viewth ... p;page=1#pid5020799

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-28 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看了,好多相关的贴子,其实都没有明白的解释先进先出法结转成本的计算方法。先进先出法确实太难,如果某个产品没出库之前进了很多批次(每批单价都不一样),那么在出库时要从第1批到第n批出起,有的要出好几个批次的才可能出的完,这些都是不确定的。如果再加上产品众多,我想这个语句是真的太难写出来了,至少我没有得到满意的答案。

TA的精华主题

TA的得分主题

发表于 2011-7-28 22:18 | 显示全部楼层
原帖由 gjj136138139 于 2011-7-28 19:44 发表
看了,好多相关的贴子,其实都没有明白的解释先进先出法结转成本的计算方法。先进先出法确实太难,如果某个产品没出库之前进了很多批次(每批单价都不一样),那么在出库时要从第1批到第n批出起,有的要出好几个批次 ...

成本单价计算方法实在太复杂了,不好用Sql方法,如果能从前面那个联合查询中求出就好办了
结存数量可以用Sql方法:
Sql = Sql1 & " union all " & Sql2 & " union all " & Sql3
Sql = "select * from(" & Sql & ") order by 产品编号,日期"
Sql = "select a.*,(select sum(期初数量)+sum(入库数量)-sum(发出数量) from (" & Sql & ") where 产品编号=a.产品编号 and 日期<=a.日期) as 结存数量 from (" & Sql & ") a"

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-29 09:44 | 显示全部楼层
嗯,很对。直接用sql就可以计算出数量。如果再直接用sql把成本单价结算进去就好了。就是一个完整的移动加权法了。我觉得应该可以实现的。相对来说,移动加权法比先进先出法要好做些,毕竟只要入库,成本才变动,至少在结存数量上不用再计算要出要一批入库的。期待有sql语句直接写出成本单价的代码出来。期待中..................

[ 本帖最后由 gjj136138139 于 2011-7-29 09:53 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-30 15:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 1楼 gjj136138139 的帖子

您好,我想问下 你这个进销存 那个表格的单价我是不需要的 所以我删除了 不过在收发存的表格里面 结存数量和金额都可以改变单元额 偏偏就是下面的数据无法移动 请问怎么修改 还有那个金额我也不需要 请问怎么删除?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 01:35 , Processed in 0.044234 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表