前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA与数据库——简化程序编写-筛选

VBA与数据库——简化程序编写-筛选

作者头像
xyj
发布2021-07-20 11:00:43
1K0
发布2021-07-20 11:00:43
举报
文章被收录于专栏:VBA 学习

要对Excel数据进行筛选,最容易想到的方法自然是Excel本身的数据-筛选功能,但是如果是要在VBA中对数据进行筛选,那么一般的做法是对数据进行循环遍历,把符合条件的数据提取出来,假如数据是这样的:

筛选代码如下:

代码语言:javascript
复制
Sub FilterData()
    Dim arr() As Variant
    '读取数据源
    arr = Range("A1").CurrentRegion.Value
    
    '记录需要筛选的数据需要放到arr中的行号
    '共用arr空间
    Dim prow As Long
    prow = 2
    
    Dim i As Long
    For i = 2 To UBound(arr)
        '筛选项目包含s的
        If VBA.InStr(arr(i, 1), "s") Then
            '复制数据
            arr(prow, 1) = arr(i, 1)
            arr(prow, 2) = arr(i, 2)
            
            prow = prow + 1
        End If
    Next
    
    '输出
    Range("D1").Resize(prow - 1, 2).Value = arr
End Sub

一旦条件变化了,需要变化的代码:

代码语言:javascript
复制
If VBA.InStr(arr(i, 1), "s") Then

让我们看看用ADO是如何做的:

代码语言:javascript
复制
Sub ADOFilterData()
    Dim AdoConn As Object
    Set AdoConn = VBA.CreateObject("ADODB.Connection")
    
    '打开数据库
    AdoConn.Open "Provider =Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"
    Range("D2").CopyFromRecordset AdoConn.Execute("select * from [Sheet1$A1:B5] where 项目 like '%s%'", , 1)

    AdoConn.Close
    Set AdoConn = Nothing
End Sub

代码和前面的汇总数据、查找数据一样,仅仅是修改了sql语句,一旦条件发生变化,也仅仅需要修改sql语句就可以,非常的简单方便。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档