2017-02-21 10 views
0

VBA noob вернулся. Мне нужна помощь с некоторыми базовыми вещами, которые я предполагаю для вас.проверить несколько значений в ячейке

У меня есть диапазон (колонка H) со значениями, такими как

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

, что я хочу есть формула или код VBA, которые выглядят, если ячейка содержит 59 и PD он должен напечатать правильно в колонке Е и если он не должен печатать Not Correct в столбце 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

ИЗБЕГАЙТЕ !! Я устал в голове после целого дня с VBA. Значение XD и 59 – DL1

+0

Кроме того, вы хотите, чтобы «Правильно» или «решили» было напечатано? – CallumDA

ответ

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 
2

Вы могли бы попробовать что-то как приведенный ниже код, используя оператора Like и wild-card *.

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, я только сейчас увидел комментарий PO ниже, измененный в соответствии с его комментарием –

+0

ЭТО РАБОТАЕТ КАК ШАРМ !! Спасибо u Shai !! – DL1