大家好,我还没有找到解决这个简单问题的方法。使用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个值是数字的行。我尝试过使用autofilter结束:
With ActiveSheet.Range("H:H").CurrentRegion
.AutoFilter Field:=8, Criteria1:= _
"=*{1-9}8", Operator:=xlAnd
End With
但我不确定正确的表示法。感谢任何帮助
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:2)
VBA的替代方法是使用Helper列。假设您的列表位于A列,从A2
开始。你可以做到
=IF(ISERROR(NUMBERVALUE(RIGHT(A2,8))),"",A2)
然后向下拖动。然后对该列进行过滤,因为会有空白,其中最后8位数字不是数字。