3天工作1秒完成 20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334

1,230 次浏览

需求提出

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

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

当然大家如果需要定制VBA表格,可以联系我加QQ 3389320399 或微信 fxYYDS3389320399

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图1

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

解题思路

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

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

前置知识

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

  • VBA数组基础

  • 根据表格有效区域获取数组

  • VBA字典基本知识

  • VBA字典行号法基础

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

郑广学VBA175例教程链接 

解题详细步骤

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

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

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图2

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

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

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

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图3

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

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

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

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

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

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

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

结果数组brr的第三列 父项

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

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

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图4

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图5

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

郑广学VBA175例教程链接 

案例文件下载地址

请关注微信公众号EXCEL880 公众号主页回复 82334 即可获取

2022世界杯赛程表 Excel版 输入比分自动计算积分和下一轮插图5

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

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

VBA代码助手下载地址

最后,像大家推荐郑老师的VBA代码助手(下载地址vbayyds.com)

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

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

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图7

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

3天工作1秒完成  20万行料号BOM表查找对应对应父项描述 经典Excel VBA字典行号法 82334插图8