网站首页 > 精选文章 正文
大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第80讲内容:利用字典实现单条件,结果多值查询。
到这里字典的讲解已经进入尾声了,在余下的几讲中,我将重点给大家讲解一下利用字典进行查询的各种方案,对于单值的查询,前面已经讲了很多,这里不再讲解,今天给大家讲解的是单条件,即一个条件,但结果是多值的查询,也就是一对多的查询,后面还会陆续实现更多的查询方法。
实例,如下面的截图,我们要在数据区域的数据中查找到各个型号的类别,对于一个型号来说,类别是各式各样的,要提取出全部的数据。

思路分析:为了实现题目的要求,我们首先把数据装入字典中,在装入字典的时候,型号作为键,类别作为键值,如果类别不是唯一的情况下,那么将类别数据合并处理,在查询的时候,只要提取所给数据对应的键值即可。
下面看我给出的代码:
Sub mynzsz_80() '第80讲 利用字典实现单条件,结果多值查询
Sheets("80").Select
'将数据存入数组
myarr = Range("a2:f" & Range("a2").End(xlDown).Row)
'创建字典对象
Set mydic = CreateObject("Scripting.Dictionary")
'在字典中装入数据
For i = 1 To UBound(myarr)
mydic(myarr(i, 1)) = mydic(myarr(i, 1)) & " " & myarr(i, 2)
Next i
' 数据的回填
Set myRng = Range(Cells(2, "I"), Cells(Range("I2").End(xlDown).Row, "I"))
For Each uu In myRng
'清空数据
Cells(uu.Row, "J") = ""
'填入查到的数据
Cells(uu.Row, "J") = mydic(uu.Value)
Next
Set mydic = Nothing
MsgBox ("ok")
End Sub
代码的截图:

代码分析:
1 上述代码中,将数据赋值给数组myarr,之后给字典mydic赋值,赋值的时候,提取数组的第一个值作为键,如果键值是多个,那么用mydic(myarr(i, 1)) & " " & myarr(i, 2)进行合并处理。最后在查询的时候,只要提取所给出查询数据的键值即可:Cells(uu.Row, "J") = mydic(uu.Value)
2 '将数据存入数组
myarr = Range("a2:f" & Range("a2").End(xlDown).Row)
上述语句是将数据装入数组中。
3 '在字典中装入数据
For i = 1 To UBound(myarr)
mydic(myarr(i, 1)) = mydic(myarr(i, 1)) & " " & myarr(i, 2)
Next i
上述语句在字典中装入数据,如果是键是重复的,键值将合并处理。
4 Set myRng = Range(Cells(2, "I"), Cells(Range("I2").End(xlDown).Row, "I"))
上述语句是将定义查询区域,即:型号所在的单元格
5 For Each uu In myRng
'清空数据
Cells(uu.Row, "J") = ""
'填入查到的数据
Cells(uu.Row, "J") = mydic(uu.Value)
Next
上述语句实现查询,注意上述代码中的uu.VALUE是指单元格的值。
6 Set mydic = Nothing
清空内存。
下面看代码的运行:

今日内容回向:
1 如何实现字典的单条件多值返回的查询?
2 如何给重复数据进行合并?
猜你喜欢
- 2024-12-25 如何在Excel中使用高级筛选实现两个条件查询
- 2024-12-25 C#动态查询:巧用Expression组合多条件表达式
- 2024-12-25 Excel多条件查询获取不连续列数据,这个公式组合好用到爆!
- 2024-12-25 ElasticSearch笔记系列——简单查询、条件查询、聚合查询
- 2024-12-25 12. WPS报表JS宏查询加入筛选条件
- 2024-12-25 wps通用!利用Excel函数实现多条件动态查询
- 2024-12-25 【人社日课·6月21日】如何查询职业资格考试的报考条件?
- 2024-12-25 利用VBA构建Excel中的多条件查询用户界面
- 2024-12-25 2024年护考成绩查询条件、流程及注意要点!
- 2024-12-25 利用字典实现三条件,结果唯一查询
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)