分享

利用字典做多条件的数据查找

 L罗乐 2018-09-27

本文转载自公众号:VBA代码集锦,作者:水灵0115

原始数据及结果示例:

代码详解:

Sub finddata()

    Dim d, arr, brr

    '建立字典对象

    Set d = CreateObject('scripting.dictionary')

    '将数据区域导入数组arr

    arr = Sheets('多条件查询').Range('B3:e' & Sheets('多条件查询').Cells(Rows.Count, 2).End(xlUp).Row)

    

    '遍历数组,将年份及产品组合成为字典的关键字,关键字对应的值为一个两列数组,第一列是单价,第二列是销量

    For i = 1 To UBound(arr)

        d(arr(i, 1) & arr(i, 2)) = Array(arr(i, 3), arr(i, 4))

    Next

     

    '结果区域导入数组brr

    brr = Sheets('多条件查询').Range('G4:j' & Sheets('多条件查询').Cells(Rows.Count, 7).End(xlUp).Row)

    

    '遍历数组brr,利用字典进行查询取数

    '举例说明:brr(1,3),数组第1行第3列即单元格I4的值等于字典d的关键字(brr(1,1)&brr(1,2)=2015A)对应的项的第一列,即2015A对应的单价

    For k = 1 To UBound(brr)

        brr(k, 3) = d(brr(k, 1) & brr(k, 2))(0)

        brr(k, 4) = d(brr(k, 1) & brr(k, 2))(1)

    Next

    '将已经取数完毕的brr写入到结果区域

     Sheets('多条件查询').Range('G4:j' & Sheets('多条件查询').Cells(Rows.Count, 7).End(xlUp).Row) = brr

End Sub


----------------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多