2017-08-17 4 views
0

Ich versuche, einige Daten bereinigen und könnte einige Hilfe mit der Ersetzungsfunktion verwenden.Funktion in VBA ersetzen

Wenn ich brauche einen Zellen-Wert in Excel ersetzen von sagen wir mal „Paul die Optometrist Pa“ auf „Paul der Optometrist PA“ Ich würde nur so etwas wie dieses

Replace(t, " Pa", " PA") 

Das Problem verwenden mit, dass es ändert auch die Buchstaben in Paul zu "PAul". Offensichtlich will ich das nicht. Gibt es eine Möglichkeit, sie daran zu hindern, irgendetwas in der Saite zu ändern, die nicht spezifisch die "PA" ist, mit nichts als möglichen Leerzeichen davor und danach?

Antwort

1

Diese RegEx entspricht Pa in der Zeichenfolge und ersetzt sie durch PA. Dies kann leicht aktualisiert wird Schleife durch Ihren Datensatz

Sub RegExExample()    
    With CreateObject("VBScript.RegExp") 
     .Global = True 
     .IgnoreCase = False 
     .Pattern = "(Pa)\b" 

     MsgBox .Replace("Paul the Optometrist Pa", "PA") 
    End With 
End Sub 

Will Ausgang Paul the Optometrist PA

+0

ich nicht ganz dieser Logik folgen; Da die Saite "Paul der Optometrist Pa" 'Paul' und' Pa' mit der gleichen Fallstruktur enthält. Also sicher ist die Groß-/Kleinschreibung nicht relevant? – Greedo

+0

Das wird immer noch 'PAl the Optometrist PA' produzieren. OP wird wahrscheinlich Regex mit Wortgrenzen verwenden müssen, um dies zu tun (ich weiß * was *, ich weiß einfach * wie *) – CLR

+0

Fairer Punkt - zu spät am Tag für mich – Tom