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

筛选代码如下:
Sub FilterData()Dim arr() As Variant'读取数据源arr = Range("A1").CurrentRegion.Value'记录需要筛选的数据需要放到arr中的行号'共用arr空间Dim prow As Longprow = 2Dim i As LongFor 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 + 1End IfNext'输出Range("D1").Resize(prow - 1, 2).Value = arrEnd Sub
一旦条件变化了,需要变化的代码:
If VBA.InStr(arr(i, 1), "s") Then
让我们看看用ADO是如何做的:
Sub ADOFilterData()Dim AdoConn As ObjectSet 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.CloseSet AdoConn = NothingEnd Sub
代码和前面的汇总数据、查找数据一样,仅仅是修改了sql语句,一旦条件发生变化,也仅仅需要修改sql语句就可以,非常的简单方便。

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




