打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excle VBA 代替Vloolup

作工程报价,经常需要结合国家的定额来做报价单。根据定额的编号,很容易获得定额的价格,方便报价。以前做报价单的时候,都是用VlookUP函数来查找定额编号在反馈相应的价格。今天要讲的例子就是用VBA取代Vlookup函数。

报价单往往都有很多行。快速的数据处理,用VBA明显会比VlookUP要快的多。

问题如下:

问题描述:

1:根据定额工作表里面的定额编号,获取黄色单元格区域的内容;

2:在报价单的工作里面,查找与定额编号匹配的数据填入。

解决的思路详解:

1:为了运行的速度,把定额工作表里面的数据,全部放入arr数组;

2:把定额编号作为字典的key,定额工作表里面的 项目名称+单位+数量作为字典的item。本例会把这三项数据,放入数组装入字典。 及字典套数组

3:查找字典的key,并输出数组。

代码运行的结果如下:

代码如下:

Sub test() Dim arr, d, Rng As Range Application.ScreenUpdating = False Set d = CreateObject('scripting.dictionary') With Sheets('定额') arr = .Range('c6:f' & .Cells(.Rows.Count, 3).End(xlUp).Row) End With For i = 1 To UBound(arr) d(arr(i, 1)) = Array(arr(i, 2), arr(i, 3), arr(i, 4)) Next With Sheets('报价单') For Each Rng In .Range('c6:c' & Cells(.Rows.Count, 3).End(xlUp).Row) Rng.Offset(0, 1).Resize(1, 3) = d(Rng.Value) Next End With Application.ScreenUpdating = TrueEnd Sub

代码解析

1:2行 Dim定义变量;

2:4行 后期绑定字典;

3:5~7行 把定额工作表里面的数据放入arr数组(本句代码是常用代码);

4:9~11行 遍历arr数组,把定额编号作为字典的key,把项目名称+单位+数量作为字典的item;

5:14行 遍历报价单工作表里的数据区域;

6:15行 把查询到的字典对应的item放入指定的单元格区域;

本例思考:

1:本例并没有事实更新的功能。请结合VBA的事件,做一个自动运行的代码。

2:本例在代码运行之前,没有清除填写单元格区域的内容,欢迎留言写入相应的代码。

小结:

解决本问题,需要用的知识点:

1:数组的运用

2:字典的运用


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
完全手册Excel VBA典型实例大全:通过368个例子掌握
3段VBA代码,从此不再「复制-粘贴」
Excel VBA小程序
Excel | 如何利用vba代码进行数据的筛选及分表处理?
Excel VBA工作薄 7.7 工作表的拆分的前奏 按照某一列/行批量生成新工作表
Excel VBA 7.15 Excel表格合并之指定列合并 合并数据更精确
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服