使用dict优化VLOOKUP参数完全一致
excel中,大量使用vlookup,打开特别慢,打算优化一下。
对于每次查询,使用“表格-范围-查询词”作为key,缓存结果。
在vba中,新建一个模块,复制即可。
使用:把原来的VLOOKUP换成vl,其他参数都不动
Public dict As Object
Function vl(lookup_value As Range, table_array As Range, col_index_num As Integer, range_lookup)
Dim ws As Worksheet
Dim pre_key As String '关键词前缀
Dim key As String
Dim result As Variant
Dim lastRow As Long
If dict Is Nothing Then
Set dict = CreateObject("Scripting.Dictionary")
End If
'ws.Range(cellname).Value 命名表格的值
'table_array.Worksheet.Name & "!" & table_array.Address & "!" & col_index_num 关键词,如=vl(A12,波段记录!A:D,2) ->波段记录!$A:$D!2
Set ws = table_array.Worksheet
pre_key = table_array.Worksheet.Name & "!" & table_array.Address & "!" & col_index_num
key = pre_key & lookup_value.Value
If Not dict.exists(key) Then
dict(key) = Application.WorksheetFunction.VLookup(lookup_value, table_array, col_index_num, range_lookup)
End If
vl = dict(key)
End Function
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2009-02-22 Nod32的内网升级方案
2008-02-22 专注是力量的秘诀-注意力的分配
2007-02-22 关于vb中的容器