mysql多条件查询_VBA如何处理多条件查询?

HI,大家好,我是星光。今天给大家分享的内容是使用VBA代码实现多条件查询的功能,照例举个栗子。 291f8eba6f193cd76880804be8ededdf.png
如下图所示,表名为“明细表”的数据是明细数据。 a13e80203bcfcefc42c47a965612bcbb.png 再如下图所示,表名为“查询表”的数据是需要查询的数据。 c82d9a3574e8f1ef446aa7febc124a16.png
现在我们需要根据查询表的姓名和课目两个条件,在明细表中查询相关的成绩 对于VBA来说,处理这样的问题总是有一个固定的套路,确定条件关系后,将明细数据循环装入字典,其中明细表的条件作为关键字(Key),需要查询的结果作为条目(Item),最后遍历查询表,根据提取相应的结果。 代 码如下:
Sub DicFind()
    Dim d As Object, arr, brr, i&, j&, k&, s$
    Set d = CreateObject("scripting.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)
        '合并查询的两个条件成为一个条件字符串,姓名@课目
        If d.exists(s) Then
        '如果字典中存在变量s
            brr(i, 3) = d(s)
            '从字典中取s对应的条目
        Else
            brr(i, 3) = ""
            '否则返回假空
        End If
    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列人员的考试次数和考试成绩 1018b9af20022c4112ca66fc7f73da1a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值