自动筛选列按string结尾的位数计算

大家好,我还没有find解决这个简单的问题。 使用VBA,我将如何过滤出以8位数字结尾的列中的所有值?

H 1 Description 2 7825434583090234927383811GEORGEBOYYY12345678 3 8923459283409192043290482CANTELOPEZZZ23456789 4 TH 1264045 Actuals 5 18723892734598298592348592BILLYBOB34567891 

我期望的输出将是:

  H 1 Description 2 7825434583090234927383811GEORGEBOYYY12345678 3 8923459283409192043290482CANTELOPEZZZ23456789 5 18723892734598298592348592BILLYBOB34567891 

因为那些是最后8个值是数字的行。 我已经尝试使用自动filter结束与这样的:

 With ActiveSheet.Range("H:H").CurrentRegion .AutoFilter Field:=8, Criteria1:= _ "=*{1-9}8", Operator:=xlAnd End With 

但我不确定正确的表示法。任何帮助表示赞赏

VBA的替代方法是使用Helper列。 假设你的名单在A列,从A2开始。 你可以做

 =IF(ISERROR(NUMBERVALUE(RIGHT(A2,8))),"",A2) 

并向下拖动。 然后过滤该列,因为最后的8位数字不是数字。

您可以使用RightIsNumeric来确定哪些行不以8个数字结尾。 只需修改相应的行数:

 Sub hidetherows() Dim sht As Worksheet Dim lastrow As Long Set sht = ThisWorkbook.Worksheets("Sheet1") 'Rename the sheet here lastrow = sht.Cells(sht.Rows.Count, "H").End(xlUp).Row For i = 1 To lastrow If Not IsNumeric(Right(Range("H" & i).Value, 8)) Then Rows(i).EntireRow.Hidden = True End If Next i End Sub 

在这里输入图像说明