2017-02-21 2 views
0

Der VBA-Noob ist zurück. Ich brauche etwas Hilfe mit einigen grundlegenden Sachen, die ich für dich Profis da draußen vermute.Überprüfen Sie mehrere Werte in Zelle

Ich habe eine Reihe (Spalte H) mit Werten wie

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

, was ich will, ist eine Formel oder ein VBA-Code, die aussehen, wenn die Zelle 59 enthalten und PD sollte Correct in Spalte E drucken und wenn nicht, sollte es Not Correct in Spalte E drucken.

Was ich heute habe, ist nur ein Anfang, aber ich weiß nicht, wie man den zweiten Wert (59) in diesem Fall hinzufügt.

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

Also, keiner Ihrer Beispielwerte wäre korrekt, da sie nicht "PD" enthalten? – CallumDA

+0

SORRY !! Ich bin müde nach einem ganzen Tag mit VBA im Kopf. Der Wert ist XD und 59 – DL1

+0

Wollen Sie auch "Korrekt" oder "entschieden" gedruckt werden? – CallumDA

Antwort

2

Warum schreiben Sie es nicht als Funktion? Sie können =CheckValue(H1) in Spalte E für die Ausgabe Ihrer

benötigen verwenden
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 


Diese Linie allein sollte genug sein, um Ihre ursprüngliche Code funktioniert aber (nicht getestet):

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

Sie etwas versuchen könnte, wie der Code unten, mit dem Operator Like und der Wildcard *.

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 du hast Recht, ich sah erst jetzt die Kommentare der Bestellung unten, geändert, um seinen Kommentar –

+0

zu passen, die wie ein Charme !! Vielen Dank Shai !! – DL1

Verwandte Themen