Wir versuchen automatisch bestimmte Teil einer Zeichenfolge in jeder Excel-Zelle automatisch basierend auf einem VBA-Wörterbuch zu übersetzen.Excel - Regulärer Ausdruck Ersatz mit Wörterbuch-Wert
Original-String Beispiele:
1.Outer Fabric:2% EA, 44% WO, 54% PES; Lining:4% EA, 96% RY
Outside:2% EA, 98% WO
1.Outer Fabric:27% PA, 73% WV; 2.Lining:100% CO; 2.Outer Fabric:100% AOS
Regulärer Ausdruck ist definiert als:
Dim strPattern As String: strPattern = "(\d{1,3}\%\s+)(\w+)"
ich es getestet und es funktioniert gut: http://refiddle.com/im7s
Das Wörterbuch von einem anderen spreasheet Excel aufgebaut ist. Die Beispiel Schlüssel/Wert-Paare sind:
EA: Leather
WO: Cloth
PES: Polyester
RY: Other
...
Aber ich kann nicht einen Weg finden, diese Wörterbuchschlüssel zu verwenden, um die ursprüngliche Zeichenfolge zu ersetzen. Zeile 12 unten ist, was ich getestet, aber es kann das Wörterbuch Wert nicht finden ...
Dim strPattern As String: strPattern = "(\d{1,3}\%\s+)(\w+)"
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A2:A50")
With regex
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Dim strReplace As String: strReplace = "$1" & IIf(Dict.Exists("$2"), Dict("$2"), "$2")
For Each cell In Myrange
If strPattern <> "" Then
strInput = cell.Value
cell.Value = regex.replace(strInput, strReplace)
End If
Next
Jede Führung dieses Problem gelöst bekommen wird sehr geschätzt. Vielen Dank!
Sie können nicht alle der Wörterbuchschlüssel in einem Schuss ersetzen: Sie jedes wiederum zu ersetzen brauchen würde. Verwenden Sie das Muster, um eine Übereinstimmungssammlung abzurufen, und führen Sie dann eine Schleife durch, indem Sie die SubMatches für jedes Element ansehen und die Ersetzung nach Bedarf ausführen. –