自动筛选列按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位数字不是数字。
您可以使用Right
和IsNumeric
来确定哪些行不以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