优秀的编程知识分享平台

网站首页 > 技术文章 正文

VBA永远的神 3天工作1秒完成 20万行料号BOM表处理 数组字典案例

nanyue 2024-09-15 23:22:44 技术文章 6 ℃

需求提出

我在一个小工厂里上班,日常工作是做生产资料的BOM管理,经常遇见BOM按料号去重,再查找父项的问题,今天我们来解决这个,即根据查询的料号的标识,来查询出对应父项描述,父项。

这个数据量有20万行,之前用人工做的时候,函数公式加手工操作,用尽所有力气做一次就要两三天,痛定思痛,努力学了VBA后,使用VBA代码编写完成本任务,每次运行3秒完成,本文案例中我用1万6前行的数据来测试,vba代码写完后每次一秒之内就完成统计,彻底解放了双手,当然有人会说,老板肯定要安排你更多工作,我显然没那么傻啊,我还是3天才交任务,自己省下来的时间去学习充电,努力考证!记住千万不要做的快就马上上交结果!那是傻子 干的事!

由于本文图片尺寸较大, 请大家尽量收藏转发后, 到电脑端大屏查看学习,效果更佳!

解题思路

由于数据比较大, 这次我们使用郑老师教的万能字典行号法,使用VBA的行号定位+数组循环来完成,下面就开始我们愉快的学习旅程!

  • 对源数据循环,VBA将相同料号的行号装入字典,行号用逗号分隔记录
  • 循环字典中的料号关键字 取出对应的行号
  • 按逗号拆分行号得到行号数组
  • 循环行号数组,从源数据依次取出右侧多列父项
  • 结果放入结果数组,写入结果区

前置知识

本案例属于实战案例,零基础有点难,学习本案例需要至少有以下VBA基础

  • VBA数组基础
  • 根据表格有效区域获取数组
  • VBA字典基本知识
  • VBA字典行号法基础

以上知识点,均可以在郑广学VBA175例教程中学习

郑广学VBA175例教程链接

解题详细步骤

1 、定义变量, 初始化VBA字典

首先需要定义一些变量和字典对象,和大家一样,最开始这个字典对象很长,总是记不住,不过还好有工具可以帮助我们快速输入,安装VBA代码助手插件后,在第25行, 只需要输入 dicd四个字母,然后按下空格,就会得到输入提示, 按下Tab键即直接输入字典的定义, 即使是第一天学vba的同学,也不怕记不住代码了!

2、循环遍历源数据数组,使用VBA字典按关键字记录行号

第29行到36行,将arr数组中的第13的料号作为字典的关键字key,

并在循环中将料号对应的行号连接并用分隔符隔开,存入字典。

循环完毕我们就将料号和他对应的行号存入字典dic中,为了方便下面取出结果,

在第37-38行取出字典的keys,items数组

3 、写入结果数组 ,输出数组到结果表

定义一个结果数组brr ,循环对应的料号数组keys,

分割取出对应料号的原数据所在的行号,再从原数据数组arr 中

结果数组brr的第一列 放料号

结果数组brr的第二列 父项描述

结果数组brr的第三列 父项

注意 在放结果数组的时候,列数根据父项个数 动态重新定义结果数组brr的第二维数

最后 输出结果数组brr到sheet2中

以上知识点在 VBA175例 第194节多列求和通用解法 记录行号二次循环法深入讲解 详细讲解

案例文件下载地址

请私信回复 82334 即可获取

好了,今天有关在Excel中BOM按料号查找的问题便介绍到这,大家赶紧实际操作练习一下吧,有不懂的问题可以留言问小编呦!感谢支持Excel880工作室,还请多多转发,持续关注我们呀!

特别推荐使用VBA代码助手,再也不怕记不住代码

VBA代码助手下载地址

最后,像大家推荐郑老师的VBA代码助手(下载地址VBA永远的神,VBA代码助手,VBAYYDSVBA永远的神,VBA代码助手,郑广学VSTO,郑广学VBA

只需输入关键字,就能将收藏过的代码整个带出来,太赞了

比如上面代码中的字典 数组输出之类都只需要打几个字就出来

以上案例代码 可以通过代码助手的代码混淆功能, 达到保护代码 依然可以运行哦,赶紧去下载代码助手试试吧!

Tags:

最近发表
标签列表