具有子字符串的Excel VBA自动筛选

海因赖希213

我的excel中有多行,其中D列为:TDM-02 Bundle Rehoming 5 NE,TDM-02 Bundle Rehoming 23 NE,IP-02 Bundle Rehoming 7 NE等。请注意,在大多数情况下,NE的数量不同的地方。我想搜索一个子字符串以在Excel VBA中自动过滤:

sht2.Select
    sht2.Activate
    If sht2.FilterMode Then
        sht2.ShowAllData
    End If

    sht2.Range("D1:D" & LastRow).AutoFilter Field:=4, Criteria1:=Array( _
        CStr("HYBRID ATM and IP - 02 Bundle Rehoming" & Chr(42)), _
        CStr("TDM - 02 Bundle Rehoming" & Chr(42)), _
        CStr("IP - 02 Bundle Rehoming" & Chr(42))), Operator:=xlFilterValues

但是,这不会产生任何结果。没有生成错误,但是结果为空行。
我尝试了其他各种选择,例如“ Hybrid ATM and IP-02 Bundle Rehoming **”等,但没有成功。有什么方法可以自动过滤这些带有可变结尾的子字符串。

丹尼尔武士

正则表达式

regexRegex101\d+(?=\s*NE)

D列上的值和E列上的数字的代码,因此您可以筛选E列:

Dim str As String
Dim objMatches As Object
lastrow = Cells(Rows.Count, "D").End(xlUp).Row
For i = 1 To lastrow
    str = Cells(i, "D")
    Set objRegExp = CreateObject("VBScript.RegExp") 'New regexp
    objRegExp.Pattern = "\d+(?=\s*NE)"
    objRegExp.Global = True
    Set objMatches = objRegExp.Execute(str)
    If objMatches.Count > 0 Then
        For Each m In objMatches
            Cells(i, "E") = m.Value
        Next
    End If
Next i

记住要启用参考

结果

结果

编辑:

我误解了,所以这里是Regex101和代码的回顾

Dim str As String
Dim objMatches As Object
lastrow = Cells(Rows.Count, "D").End(xlUp).Row
For i = 1 To lastrow
    str = Cells(i, "D")
    Set objRegExp = CreateObject("VBScript.RegExp") 'New regexp
    objRegExp.Pattern = "\d+(?=\s*NE)"
    objRegExp.Global = True
    Set objMatches = objRegExp.Execute(str)
    If objMatches.Count > 0 Then
    k = 5
        For Each m In objMatches
           Cells(i, k) = m.Value
           k = k + 1
        Next
    End If
Next i

结果

结果编辑

因此,您可以仅针对数字过滤其他列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel VBA自动筛选

Excel VBA 自动筛选代码

使用VBA清除Excel自动筛选

使用 VBA 在 Excel 中获取自动筛选行的行数

使用Excel VBA自动筛选枢轴和非枢轴列

Excel VBA 自动筛选百分比

Excel VBA自动筛选器值不等于星号(*)

Excel VBA使用自动筛选器复制行

如何在Excel中使用VBA遍历自动筛选器?

Excel VBA:如何从单元格中删除子字符串(具有相同的开始和结束符号)?

Excel 自动筛选条件变体到字符串

Excel VBA中的子字符串

Excel VBA自动筛选器使用数组-同一列中有多个值

Excel自动筛选器不适用于带有VBA代码的日期和时间的列

Excel VBA-从剪贴板返回字符串中所有子字符串的位置

在Excel中按日期设置的VBA自动筛选-不显示任何数据

如何仅迭代 Excel VBA 中自动筛选工作表中的行?

Excel VBA-如果自动筛选器不包含任何记录,MsgBox

Excel VBA-从自动筛选器返回Criteria1数组

具有特殊字符串值的excel vba char(10)

Excel VBA-具有可变分隔符计数的分割字符串

Excel VBA 在相邻单元格中查找具有最大值的字符串

Excel VBA重复删除左上角具有特定字符串的范围

Excel自动筛选器错误

VBA使用字符串数组作为子字符串参数InStr函数(Excel)

Excel-VBA:当工作表应用了“自动筛选”并且筛选器设置隐藏了包含计算的行时,FillDown无法正常工作

具有热键和热字符串的自动热键

VBA 拆分具有多个值的字符串句子

使用VBA筛选Excel数据