2016-10-20 62 views
2

请告诉我过滤器是用来检查单元格是否包含字母和数字,或者单元格是否只包含字母?如果只包含数字,它必须传递给下一个单元格。我一直在寻找,但唯一的结果是,如果单元格包含某些值或文本,但我无法找到一个例子形成我的问题。如果单元格值包含字母和数字,请删除行

With ActiveSheet 
    Firstrow = .UsedRange.Cells(1).Row 
    Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row 
    For Lrow = Lastrow To Firstrow Step -1 
     With .Cells(Lrow, "e") 
      If .Value = " cell has letters AND numbers OR just letters " Then 
      .EntireRow.Delete 
      End With 
     Next Lrow 
    End With 
+0

怎么样,如果单元格是空的? –

+0

我得到了这个覆盖:) – wittman

回答

2

前:

enter image description here

我会检查每个字符:

Sub qwerty() 
    Dim KillMe As Boolean, CH As String 
    With ActiveSheet 
     Firstrow = .UsedRange.Cells(1).Row 
     Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row 
     For Lrow = Lastrow To Firstrow Step -1 
      KillMe = False 
      With .Cells(Lrow, "e") 
       For i = 1 To Len(.Value) 
        CH = Mid(.Value, i, 1) 
        If CH Like "[a-zA-Z]" Then KillMe = True 
       Next i 
       If KillMe Then .EntireRow.Delete 
      End With 
     Next Lrow 
    End With 
End Sub 

注:

这忽略标点符号和特殊字符。它仅查找字母。

后:

enter image description here

+0

它的工作原理,谢谢。 – wittman

0

根据单元格的格式,你可以可以使用

With ActiveSheet Firstrow = .UsedRange.Cells(1).Row Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row For Lrow = Lastrow To Firstrow Step -1 With .Cells(Lrow, "e") If worksheetfunction.IsText(.Value) Then .EntireRow.Delete
End With Next Lrow End With

+0

如果有一个数字和一个字母,ISTEXT()返回TRUE。 – Brian

+0

对不起,我以为那是 – maxhob17

+0

之后的结果谢谢你们一样。 – wittman

1

使用这样的WorksheetFunction:

Dim wf As WorksheetFunction 
Set wf = Application.WorksheetFunction 
... 
If Application.Evaluate("=Count(Find({0,1,2,3,4,5,6,7,8,9}," & _ 
.Address & ")) > 0") Then  
... 
相关问题