在IF语句中使用通配符

时间:2019-03-19 13:04:50

标签: excel vba

我试图在我的VBA中使用下面的代码,但是它不起作用,我有很多包含HFMWO123455 ect的单元格,数字一直在变化。任何帮助表示赞赏。

If ((.Cells(K, "E").Value = "HFMWO*")) Then
    J = J + 1
    .Rows(K).EntireRow.Copy Destination:=Worksheets("Facilities").Range("A" & J + 1)
    .Rows(K).EntireRow.Delete
End If

4 个答案:

答案 0 :(得分:0)

有两种简单的方法。如果仅检查字符串中是否存在子字符串,请尝试以下操作:

If Instr(SearchString, target) then
    ' Do stuff
End If

或者,您也可以使用“赞”:

If SearchString LIKE "*" &target & "*" Then
    'Do stuff
End If

答案 1 :(得分:0)

通配符比较需要Like运算符。

If .Cells(K, "E").Value LIKE "HFMWO*" Then
    J = J + 1
    .Rows(K).EntireRow.Copy _
       Destination:=Worksheets("Facilities").Range("A" & J + 1) 
    .Rows(K).EntireRow.Delete
End If

答案 2 :(得分:0)

您可以尝试:

Option Explicit

Sub test()

    Dim j As Long, k As Long

    With ThisWorkbook.Worksheets("Sheet1") '<- Change sheet name to fit your needs

        If InStr(1, .Cells(k, "E").Value, "HFMWO", vbTextCompare) > 0 Then
            j = j + 1
            .Rows(k).EntireRow.Copy Destination:=Worksheets("Facilities").Range("A" & j + 1)
            .Rows(k).EntireRow.Delete
        End If

    End With

End Sub

注释:

  • 如果您要删除行,请从下到上循环。

答案 3 :(得分:0)

您应该为此使用Like运算符。

'Public Sub StringLike()
'    Dim K As Long: K = 1
'    Dim J As Long: J = 1
'    With ActiveSheet.UsedRange
        If .Cells(K, "E").Value Like "HFMWO*" Then
            J = J + 1
            .Rows(K).EntireRow.Copy Destination:=Worksheets("Facilities").Range("A" & J + 1)
            .Rows(K).EntireRow.Delete
        End If
'    End With
'End Sub

请注意,我添加了一些行以使代码可测试,但是注释掉了它们,因为在插入文件时不需要它们。

顺便说一句,将来,请在您的问题中包含此类代码示例,以便于测试。