本文转载自公众号: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 ---------------------------------------- |
|