检查单元格中的多个值

时间:2017-02-21 14:38:28

标签: excel vba excel-vba

VBA noob回来了。我需要帮助一些基本的东西,我认为你们在那里的职业选手。

我有一个范围(列H),其值为

P595349 saf XD    
P5933 LP XD    
P5955 GW1 (GG+W+P+E) XD

我想要的是一个公式或VBA代码,看看单元格是否包含59和PD它应该在E列中打印正确,如果不是,它应该在E列中打印Not Correct。

我今天所拥有的只是一个开始但我不知道在这种情况下如何添加第二个值(59)。

  Sub AddDashes()

  With ThisWorkbook.Worksheets("sheet1")

     Dim SrchRng As Range, cel As Range

     Set SrchRng = Range("A:a")

     For Each cel In SrchRng
         If InStr(1, cel.Value, "PD") Then
             cel.Offset(0, 3).Value = "Decided"
         Else
             cel.Offset(0, 3).Value = "not"        
         End If
     Next cel
 End With

 End Sub

2 个答案:

答案 0 :(得分:2)

为什么不把它写成函数呢?您可以在=CheckValue(H1)列中使用E来输出您的要求

Function CheckValue(str As String)
    If InStr(str, "XD")>0 And InStr(str, "59")>0 Then
        CheckValue = "Correct"
        Exit Function
    End If
    CheckValue = "Not Correct"
End Function

<小时/> 仅此一行应足以使您的原始代码工作(未经测试):

If InStr(str, "XD")>0 And InStr(str, "59")>0 Then

答案 1 :(得分:2)

您可以使用Like运算符和通配符*尝试类似下面的代码。

Option Explicit

Sub AddDashes()

Dim SrchRng As Range, cel As Range

With ThisWorkbook.Worksheets("sheet1")
    Set SrchRng = .Range("A:A") '<-- don't forget to fully qualify your Range    
    For Each cel In SrchRng
        If cel.Value Like "*PD*" And cel.Value Like "*59*" Then
             cel.Offset(0, 3).value = "Decided"
        Else
             cel.Offset(0, 3).value = "not"
        End If
    Next cel    
End With

End Sub