VBA把3天的活3秒干了 收费500贵不贵?

文摘   2024-10-23 12:03   湖北  

经常有人问VBA能干什么,这个案例或许就可以看到一些,因为类似Bom这样的问题用手算或者公式几乎就无解了,用vba写好代码后就是一秒完成!

之前做付费定制的时候,有个客户的需求是BOM多级物料分解计算的问题,据他说手工计算每次要算3天,我写了一个代码一键完成,1万行数据耗时3秒,收费500,皆大欢喜!

一般来说要用嵌套字典,不过他这个数据有一个特征,就是物料已经按顺序排列好了,上下行有层级标记,可以直接体现上下级关系,但是也有一点比较奇怪的规则,就是有些物料会在多个上层的下级出现,所以不能简单用物料号来查找,我这里给的一个解决方案,下面是解题思路:

1. 添加每一行唯一ID,并计算出每一行的上级ID

首先,为了解决它物料号有重复使用的问题,我们给每一行添加一个独立ID,也就是顺序编号,再利用公式根据层级查找到前一个上级ID,这里也可以在代码里实现,插入辅助列方式更方便理清思路以及检查结果。

2. 编写代码实现多级展开计算

这里有个技巧,从后往前遍历,因为我们的已知条件是知道每一个ID对应的上级,那么每一行都从上级遍历到1级,每一级累计相乘结果就是展开的总物料用量,简单来说,本级用量1,上级用量2,上上级用量是3 生成数是100 那本级用量结果就是100*1*2*3=600,这里代码不多,但实际上对编程水平要求颇高,主要是理解内部这个迭代计算的过程,代码如下图所示,重点在11行到16行的逻辑

代码写完做一个按钮链接到宏,一键完成,有人说那么点数据手算也可以了,那我告诉你,这个实际数据可能有几百个类似的表,手算3天都算不完你信不!这就是vba的魅力,若有这方面付费定制需求,也就是手工函数无法完成的任务,或者完成太慢的任务,都可以使用代码加速,vba jsa vsto都可以, 联系加我微信EXCEL880B

买课程可进永久答疑群,课程可免费试学点击下方链接即可

郑广学Excel实战教程




EXCEL880
Excel/WPS办公技巧分享 郑广学VBA/VSTO/JSA教程分享 课程咨询及付费定制表格加EXCEL880B
 最新文章