网站首页 > 基础教程 正文
学习是一件很枯燥、痛苦的事情,小弟希望通过分享自己的学习笔记,获得继续下去的动力,有不足之处希望路过的大神多多指教,不胜感激!
在Excel中,Vlookup是非常高效的一个批量查询相关信息的函数。但是,当需要查询的数据达到几十万时,Vlookup函数会变得很低效,甚至影响到表格的运转。
于是,小弟通过以下的宏代码,“取代”了Vlookup函数,达到了自己想要的高效工作模式。
下图是示例:
代码原文:
Option Explicit
Sub Test1()
'定义变量
Dim t, i
Dim arr1, arr2
Dim dic1, dic2
'记录宏开始运行时间,关闭屏幕刷新
t = Timer
Application.ScreenUpdating = False
Sheets("宏学习1").Activate
'创建数组arr1,创建字典dic1,dic2
arr1 = Range("A2:B" & Cells(Rows.Count, "A").End(xlUp).Row)
Set dic1 = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
'往字典dic1,dic2内循环加入自己想要的内容
For i = 1 To UBound(arr1)
If Not dic1.exists(arr1(i, 1) & arr1(i, 2)) Then
dic1.Add arr1(i, 1) & arr1(i, 2), arr1(i, 2)
End If
If Not dic2.exists(arr1(i, 1)) Then
dic2.Add arr1(i, 1), arr1(i, 2)
End If
Next
'如果字典和查询词放在同一个表,不需要加这一行代码
Sheets("宏学习1").Activate
'创建数组arr2
arr2 = Range("D2:E" & Cells(Rows.Count, "D").End(xlUp).Row)
For i = 1 To UBound(arr2)
If arr2(i, 1) <> "" Then
arr2(i, 2) = dic2(arr2(i, 1))
End If
Next
'将数组arr2计算出来的data,写入到对应的单元格
[D2].Resize(UBound(arr2), UBound(arr2, 2)) = arr2
'恢复屏幕刷新
Application.ScreenUpdating = True
'弹窗提示宏运行时间
MsgBox "程序耗时: " & FormatNumber(Timer - t, 4, -1) & "s"
End Sub
以上,小弟今天的学习笔记,希望能够帮助到需要的人,也希望能够获得路过大神的指导,谢谢!
猜你喜欢
- 2025-05-03 菜鸟新手尤为注意 看完再也不敢乱停了
- 2025-05-03 可编程控制器——西门子S7-300PLC
- 2025-05-03 设计模式系列:一文带你领略“访问者模式”的魅力
- 2025-05-03 程序员必备技能:设计模式之——组合模式
- 2025-05-03 一文让你读懂“设计模式七大原则之——单一职责原则”
- 2025-05-03 Java多线程编程性能提升指南:从菜鸟到高手
- 2025-05-03 字节跳动竟然斥巨资开发出《Python知识手册》,高清PDF
- 2025-05-03 手写“栈”数据结构(数据结构栈的顺序表示和实现)
- 2025-05-03 深度解析设计模式七大原则之——里氏替换原则
- 2025-05-03 游戏开发编程到底是什么?(游戏开发用什么编程)
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)