我们今天分享的内容是使用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列人员的考试次数和考试成绩

mysql多条件查询_excel用字典处理多条件查询问题相关推荐

  1. 关于DNS区域查询,DNS字典爆破,以及查询文件问题

    在查询DNS区域传输中所有的主机信息时候,使用dig中的axfr全区域查询或者使用host命令查询的效果是一样的,但是大部分的DNS服务器设置都比较健全,不会轻易将DNS主机记录反馈给我们,这时候可以 ...

  2. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...

    一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节 ...

  3. mysql连表查询on条件_mysql 外连接的时候,条件在on后面和条件在where后面的区别...

    最近使用mysql的时候碰到一个问题:当一个表外联另一个表的时候,将一些查询条件放在on后面和放在where后面不太一样: 学生分数表stuscore: 当查询语句如下(查询语句1): SELECT ...

  4. mysql条件关键字查询有limt_MySQL使用Limit关键字限制查询结果的数量-Go语言中文社区...

    1.Limit关键字的使用 查询数据时,可能会查询出很多的记录.而用户需要的记录可能只是很少的一部分.这样就需要来限制查询结果的数量.Limit是MySQL中的一个特殊关键字.Limit子句可以对查询 ...

  5. Mysql查询数据之基本和多条件查询

    (1)基本查询 SQL基本查询语法:SELECT * FROM <表名>; SELECT查询的结果是一个二维表. MySQL [test]> select * from studen ...

  6. mysql数据库条件语句怎么写_Mysql数据库的条件查询语句

    对于分析人员来讲,Mysql数据库应用最多的是select查询语句,此篇文章主要介绍Mysql数据库的查询语句. 一.单表查询 1.带条件的查询 基本语法:select * from +表名称 +wh ...

  7. MySQL基础(八):模糊查询的SQL语句、where条件查询、比较运算符查询、逻辑运算符查询、模糊查询、范围查询、空判断查询

    文章目录 where条件查询 1. where条件查询的介绍 2. 比较运算符查询 3. 逻辑运算符查询 4. 模糊查询 5. 范围查询 6. 空判断查询 7. 小结 where条件查询 学习目标 能 ...

  8. mysql包含条件查询怎么写_mysql中where条件查询

    #进阶2:条件查询 /* 语法: SELECT 查询列表 FROM 表名 WHERE 筛选条件: 分类: 一.按条件表达式筛选 条件运算符:> < = <> >= < ...

  9. MySQL第九章索引_MySQL高级(索引优化+慢查询定位)

    一.先谈谈事务 1. ACID特性 1.1 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用: 1.2 一致性: 执行事务前后,数据库从一个一致性状态转换 ...

最新文章

  1. Akamai CDN技术调研
  2. 在线作图|在线做Metastats组间差异分析
  3. OSChina 周日乱弹 —— 比996更先进的是365工作制
  4. webp-imageio 如何编译及使用
  5. pythonhtml内容比较_Python使用difflib模块比较两个文件内容异同,同时输出html易浏览...
  6. C语言求网格的最大不重复路径数的算法(附完整源码)
  7. html5长按保存,iOS UIWebView仿微信H5页面实现长按保存图片功能
  8. iReport 4.1 报表、子报表、主从报表、合计、实例解析
  9. 支付宝 .NET SDK 报错:RSA签名遭遇异常,请检查私钥格式是否正确。
  10. 4s测试电池的软件,只需4步,不去4S店不要专业设备,你也能测出动力电池的容量...
  11. oracle dba开头的表,oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图...
  12. golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
  13. CSS 中的字体兼容写法:用CSS为英文和中文字体分别设置不同的字体
  14. 软件一定要联网安装,只有内网就干瞪眼
  15. JSONObject.fromObject()方法报错解决方法
  16. css实现简单几何图形
  17. php项目部署到服务器
  18. 项目总结Word基本格式
  19. C语言内存分配-附图详解,代码区、常量区、栈区、堆区.......
  20. 模拟cmos集成电路(10)

热门文章

  1. linux默认安装数据库密码是多少,Linux服务器上安装MySql数据库(默认安装,密码为空),首次使用需要修改密码(示例代码)...
  2. jsp springmvc 视图解析器_SpringMVC工作原理
  3. OpenCV的DNN模块
  4. 《Reids 设计与实现》第十六章 集群(下)
  5. 力扣401.二进制手表
  6. POS tagging中英文对应
  7. NGINX---一次阿里云宝塔开发flask经历
  8. Sqoop-MySQL导入hive时id为文本解决
  9. Qt常用类——QWidget
  10. docker run 与docker start的区别