2017-02-21 119 views
0

VBA noob回来了。我需要一些基本的东西,我想为你的专业人员提供帮助。检查单元格中的多个值

我有一个值,如

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

一个范围(H列)我想是一个公式或VBA代码,看看如果电池包含59和PD应该在E列打印正确和如果不是,它应该在列E中打印不正确。

我今天只有一个开始,但我不知道如何在这种情况下添加第二个值(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 
+0

因此,您的示例值都不正确,因为它们不包含“PD”? – CallumDA

+0

SORRY !!我用VBA整整一天之后,脑海里已经疲惫不堪。值是XD和59 – DL1

+0

另外,您是否要打印“正确”或“已决定”? – CallumDA

回答

2

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

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 
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 
+0

@CallumDA your'e right,我现在只看到邮政局的评论,修改,以适应他的评论 –

+0

这样的工作就像一个魅力!谢谢你Shai! – DL1

相关问题