VBA只模拟VLOOKUP函效果?更强!

职场   教育   2024-10-23 23:24   江苏  


VBA中比较常用的对象之一就是字典,他可以实现快速的查找和各种汇总处理!最大的特点就是速度快,哈希算法就不扯了,直接看案例!!


01 - 使用字典实现VLOOKUP功能


以下演示的是字典最基本的用法!Key-Value查询!


源码分享:

'作者:E精精
'公众号:Excel办公实战
'-----------------------------------------------------
Sub 字典查询()
    '定义并创建字典
    Dim d As Object
    Set d = CreateObject("Scripting.dictionary")
    
    '数据源转入数组
    Dim arr, i As Long
    arr = Sheet1.Range("a1").CurrentRegion.Value
    
    '
循环写入字典
    For i = 2 To UBound(arr)
        d(arr(i, 1)) = arr(i, 2)
    Next
    
    '测试查询效果
    MsgBox d("GM004")
End Sub




02  - 快速实现数据汇总!


这里我们就来看一下如何汇总多个工作表中的数据!

A列姓名,B列销售金额,有四周这样的数据需要我们按照姓名汇总对应的小时金额!



源码分享:基本都有简单的注释!

'作者:E精精
'公众号:Excel办公实战
'-----------------------------------------------------
Sub 字典_条件汇总()
    '定义并创建字典
    Dim d As Object
    Set d = CreateObject("Scripting.dictionary")
    
    Dim i As Long, j As Long
    '从第二个工作表开始汇总
    For i = 2 To Sheets.Count
        With Sheets(i)
            For j = 2 To Sheets(i).UsedRange.Rows.Count
                If .Cells(j, 1) <> "" Then
                    '
对应的姓名销售金额累加
                    d(.Cells(j, 1).Value) = _
                    d(.Cells(j, 1).Value) + .Cells(j, 2).Value
                End If
            Next
        End With
    Next
    
    '写入汇总表
    With Sheets("汇总")
        .Cells.Clear
        '
标题
        .Cells(1, 1).Resize(1, 2) = [{"姓名","金额合计"}]
        '写入内容
        .Cells(2, 1).Resize(d.Count, 2) = _
        Application.Transpose(Array(d.Keys, d.items))
    End With
End Sub


以上应该算是字典最最常见的用法!如果你掌握了上面的用法,那么字典基本也就入门了!

本文属于VBA字典的基础用法,当然不是0基础教程!请根据自己情况学习!

一键速达


| 岗前速通 | 数分必备 | 百个函数 | 函数编程 | PQ系列  | 
| 精通查询 全套教程 | 学习社群 | 常用代码 |

Excel办公实战
分享Excel及WPS函数、技巧、VBA、PBI、JSA等办公技能。助你轻松实现办公自动化!易办公◎早下班!
 最新文章