首页 > 解决方案 > 检查列中是否有“1”,如果有,则过滤

问题描述

我有这段代码可以让我搜索一个字符串,如果它在那里,然后过滤那个字符串,但如果它不在那里,那么什么也不做。

Dim Findvalue As String
Dim Rng As Range
Findvalue = "1"

 With ws.Range("K:K")
      Set Rng = .Find(What:=Findvalue, _
                  After:=.Cells(.Cells.Count), _
                  LookIn:=xlValues, _
                  LookAt:=xlWhole, _
                  SearchOrder:=xlByRows, _
                  SearchDirection:=xlNext, _
                  MatchCase:=False)
             If Not Rng Is Nothing Then
                  ws.Range("K4").AutoFilter _
                  Field:=11, _
                  Criteria1:="1"

             Else
                Exit Sub
             End If
 End With

如果该值是字母,则此方法有效,但当它为数字时无效。

标签: excelvba

解决方案


find 方法经常有格式相关的问题;你可以试试

Dim Findvalue As String

Findvalue = "1"
With ws
   If Application.WorksheetFunction.CountIf(.Range("K:K"), Findvalue) > 0 Then
        .Range("K4").AutoFilter _
        Field:=11, _
        Criteria1:="1" 'Criteria1:=Findvalue ?
   End If
End With

推荐阅读