检查单元格中的多个值

VBA noob回来了。 我需要帮助一些基本的东西,我想为你的专业人士在那里。

我有一个范围(列H)的值,如

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

我想要的是一个公式或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 

为什么不把它写成一个函数呢? 您可以在列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 

这一行应该足以让你的原始代码工作,但(未经testing):

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

你可以使用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