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

时间:2018-08-14 08:54:48

标签: excel vba excel-vba

我有多行具有不同的字符串,我要在其中按此顺序过滤数据

“然后输入数字”,即 DI07493A

列值如下:

01LICIN

05LICIN

AARHUSK

DI07493A

ABS16

DICOFDI

DI94193A

我正在尝试这样。

sheet1.Range("A1:A" & LastRow).AutoFilter Field:=4, Criteria1:= DI & #, Operator:=xlFilterValues

它不起作用。有没有办法得到这个结果?

4 个答案:

答案 0 :(得分:3)

尝试以下操作:

有一列(例如A1:A8)包含标题(例如,称为Header),然后是值。

然后在B列上具有相同的标题,并且B2:B11中的值分别为DI0*DI1*DI2*DI3*DI4*DI5*DI6*DI7*DI8*DI9*

然后将AdvancedFilter应用于代码:

Range("A1:A8").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B11").

Before running the code

After running the code

答案 1 :(得分:2)

第二次尝试.Find

    Crncy  Spread  Duration  Adj_EUR  Adj_USD
0   EUR    100     1.2       12       22
1   nan    nan     nan       0.0      0.0
...

正如我所说的...超级丑陋,但也许您可以了解一下我想完成的事情

答案 2 :(得分:1)

尝试以下代码:

Sub Filter()
    Dim lastRow As Long, i As Long, ws As Worksheet
    Set ws = Worksheets("sheet_name")
    With ws
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 1 To lastRow
            'this conition checks if cell contains "DI" followed by a digit
            If Not Left(.Cells(i, 1).Value, 3) Like "DI[0-9]" Then
                .Rows(i).Hidden = True
            End If
        Next
    End With
End Sub

答案 3 :(得分:0)

您只需要在子字符串的相关部分添加一个星号即可。

在您的代码中,更改以下内容:Criteria1 := DI*