??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
Excel VBA 用字典处理多条件查询问题

转载   ExcelHome   2018-10-28   浏览量:31



我们今天分享的内容是使用VBA代码实现多条件查询的功能。

如下图所示,表名为“明细表”的数据是明细数据。


再如下图所示,表名为“查询表”的数据是需要查询的数据。

现在我们需要根据查询表的姓名和课目两个条件,在明细表中查询相关的成绩。
对于VBA来说,处理这样的问题总是有一个固定的套路,确定条件关系后,将明细数据循环装入字典,其中明细表的条件作为关键字(Key),需要查询的结果作为条目(Item),最后遍历查询表,根据提取相应的结果。
代码如下:

Sub DicFind()
Dim d As Object, arr, brr, i&, j&, k&, s$
Set d = CreateObject("ing.dictionary")
'后期引用字典
'd.CompareMode = vbTextCompare
'不区分字母大小写
arr = Sheets("明细表").[a1].CurrentRegion
'明细数据装入数组arr
For i = 2 To UBound(arr)
'遍历数组arr,将数据装入字典,以备查询
'标题行不要,从第二行开始遍历
For j = 2 To UBound(arr, 2)
'标题列不要,从第二列开始遍历
s = arr(i, 1) & "@" & arr(1, j)
'姓名@课目是查询条件,作为字典的key值
d(s) = arr(i, j)
'成绩是查询的结果,作为字典的item
Next
Next
brr = Sheets("查询表").[a1].CurrentRegion
'查询区域的数据装入数组brr
For i = 2 To UBound(brr)
s = brr(i, 1) & "@" & brr(i, 2)
'合并查询的两个条件成为一个条件字符串,姓名@课目
For j = 3 To UBound(brr, 2)
If d.exists(s) Then
'如果字典中存在变量s
brr(i, j) = d(s)
'从字典中取s对应的条目
Else
brr(i, j) = ""
'否则返回假空
End If
Next
Next
Sheets("查询表").[a1].CurrentRegion = brr
'将数组brr放回查询区域
MsgBox "查询OK"
Set d = Nothing
'释放字典内存
End Sub


小贴士:
1,对于字典查询法来说,其实大部分情况下,并不存在多条件查询的问题,把多个条件合并成一个条件表达式,那就是单条件查询。
2,需要注意的是,该段代码区分字母大小写,也就是说“VBA”并不等同于“vba”,如果需要不区分字母大小写,取消代码中以下语句的注释。
'd.CompareMode =vbTextCompare '不区分字母大小写
3,留个练手题,使用VBA代码实现条件求和和计数。
如下图所示,根据A:B列的数据,计算D列人员的考试次数和考试成绩


测试及练习文件:
https://pan.baidu.com/s/1slv74qp


转载请注明来源"ExcelHome"并保留原文链接。
固定链接://www.excelhome.net/lesson/article/excel/1916.html

彩票开奖查询 www.kbyp.net

转载自://www.excelhome.net/lesson/article/excel/1916.html

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024


上一篇:
没有了

excel2013中数据验证(数据有效性)的使用方法介绍
数据验证即数据有效性,那么,excel2013数据有效性在哪里?应该如何使用呢?今天小编就给大家简单介绍一下excel2013中数据验证(数据有效性)的使用方法,希望对大家有所帮助
8张动图,学会Excel中的高级筛选
一起来学习Excel中的高级筛选,看看高级筛选里藏着哪些秘密。
Excel中的日期时间计算,套路很全
介绍日期时间计算的套路,掌握这些套路,工作效率可以再高一点点。
抱怨加班之前,先看看这13个Excel技巧会不会
在Excel中输入日期时,年月日之间可以使用短横线-或是使用斜杠/作为间隔。但是很多小伙伴输入日期时习惯使用小数点作为间隔,例如2016.5.12这样的。这样的日期输入形式,在Excel中是无法被正确识别的,如何快速转换为规范的日期呢?
5个简单实用的Excel技巧
1、同时冻结指定行列,2、连接文字和日期,3、筛选后可以连续的序号,4、计算文本算式,5、超过日期,表格不显示内容。
一个很牛的Excel公式用法
和大家分享一个很有趣的Excel公式用法,先来看题目:如下图,表格中记录的是一些户籍信息,A列是“和户主的关系”,B列是人员姓名。要求如果A列是户主,就在C列统计出这一户的人数。
Excel常用函数公式20例
下面是一组常用Excel函数公式的用法,学会这些套路,让工作效率再高一丢丢。
多条件求和、多条件计数、多条件查找……多了去了!
下面一组常用的多条件判断、统计Excel函数公式,收藏这些常用套路,让工作效率再高一丢丢。
Excel高阶图表,效果真棒
说起图形,大家不知道想到了什么,嘿嘿,芬子写的教程一般都是图表,所以这里的图形也跟图表脱不了关系(当然还是希望自己写点别的,哈哈?。?。那具体是怎样改变视界呢?恩,接下来也许会有几个教程,都会告诉你,图形与图表到底能擦出怎样的火花。
处理不规范数据,这招儿有点狠
在这个表格内,同一个部门的人员名单都挤到一个单元格内。现在问题来了,要把这样的数据转换成数据列表,该怎么操作呢?