暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

VBA 学习 2021-07-30
446





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

筛选代码如下:

    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

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

      If VBA.InStr(arr(i, 1), "s") Then


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

        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语句就可以,非常的简单方便。




        文章转载自VBA 学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论