vba filter函数怎么用

vba filter函数怎么用,第1张

filter英文意思是过滤器。顾名思义,这个函数大致功能就是过滤筛选,它是一个针对于数组的函数。有4个参数,分别是:sourcearray(待筛选数雀明组),match(要查找的字符串),include(布尔值,是否包含匹配项),compare(字符查找对比方式)。下面用一个例子说明用法:

Sub test()

    Dim arr As Variant, brr As Variant, crr As Variant

    arr = Array(2, 1, 2, 4, 3, 2)

    brr = Filter(arr, 2, False)

    crr = Filter(arr, 2, True)

    MsgBox "过滤掉匹配项,保留其余项:" & vbCrLf & Join(brr, "_")

    MsgBox "过滤掉不匹配项,保留匹配项目:" & vbCrLf & Join(crr, "_")

End Sub

'执行结果分别是斗岁配:

'过滤掉匹配项,保留其余项:

'1_4_3

'过滤掉不匹配项,保留匹配项目:

'2_2_2

从上面的例子brr数组是从arr数组中过滤掉了2,保留其他非匹配项目组成的一个新数组,crr是从arr中去掉了非匹配项,保留了是2的项组成的新数组。所以filter第三个参数是关键,如果是false就不保留匹配向,是true就只保留匹配项,我们一般用的是像brr那种,crr这种现实中没空指什么意义,只是用ubound(crr)-lbound(crr)+1>0 这种来确定某个字符在某个数组中是否存在!

既然用VBA了就不一定要拘泥于用 excel自带的筛选工具了,可以用正则表达式,下面是一段用正则写的用来找到dat表A列 以“PSG - ”或者“IPG - ”开头的数据,然后保存在res表里面,如果你会VBA的话,参考着改一下,不会的话,补充条桐埋件,我帮你改!

Option Explicit

Sub s_filter()

    Dim dat As Worksheet, res As Worksheet

    Dim ln As Long, i As Long, k As Integer

    Set dat = Sheets("Sheet1") '要筛选的原始表

    Set res = Sheets("Sheet2") '符合条件结果保存表

    ln = dat.[a60000].End(3).Row

    With CreateObject("vbscript.regexp")

        .Global = False

        .Pattern = "^(PSG - |IPG - )" '正则春轮卜样式

        For i = 1 To ln

            If .test(dat.Range("a" &扒穗 i).Value) Then

                k = k + 1

                dat.Range("a" & i).EntireRow.Copy res.Range("a" & k)

            End If

        Next i

        MsgBox k

    End With

    Set res = Nothing

    Set dat = Nothing

End Sub

----------------------------------------------------------------

一逗洞腊定要用filter写 有颤缓点山滑强硬。。。

Sub aaa()

Dim arr, brr

Dim I As Integer

ReDim brr(2 To Cells(Rows.Count, 1).End(xlUp).Row)

For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row

brr(I) = Cells(I, 1) &Cells(I, 2)

Next

arr = Application.Transpose(Range("A2:A7"))

arr = VBA.Filter(arr, [G1], True)

brr = VBA.Filter(brr, [G1], True)

For I = 2 To 2 + UBound(arr)

Cells(I, 4) = arr(I - 2)

Cells(I, 5) = brr(I - 2)

Cells(I, 5).Replace arr(I - 2), ""

Next

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12126111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存