我使用RegEx搜索字符串
If RegExp.test(Cel.Value) Then
Debug.Print Left$(Cel.Value, Len(Cel.Value) - 1)
End If
这是我的数据
3250A WEST SEM
110055K KEALY RD
804B WEST AMERICA
804 EAST AMERICA
结果应为
3250 WEST SEM
110055 KEALY RD
804 WEST AMERICA
804 EAST AMERICA
删除最后一个字符的最佳方法是什么?
答案 0 :(得分:4)
答案 1 :(得分:4)
您可以使用此正则表达式:
(\d+)(\w{1})(\s.+)
(\d+)
- 捕获一个或多个数字(\w{1})
- 捕获您要移除的一个字母 - 如果您有示例123XX SOMEWHERE然后捕获XX,如果您认为将有1,则使用(\w+)
或(\w{1,2})
或数字后面的2个字符。(\s.+)
- 捕获一个空格,后跟任何内容如果您想要替换,只想删除第二个匹配组((\w{1})
)并加入第一个和第三个匹配组 - 因此$1$3
函数中的Replace
:
strReplaced = objRegex.Replace(CStr(varTest), "$1$3")
示例VBA代码
Option Explicit
Sub Test()
Dim objRegex As Object
Dim varTests As Variant
Dim varTest As Variant
Dim strPattern As String
Dim strReplaced As String
varTests = Array("3250A WEST SEM", "110055K KEALY RD", "804B WEST AMERICA")
strPattern = "(\d+)(\w{1})(\s.+)"
Set objRegex = CreateObject("VBScript.Regexp")
objRegex.Pattern = strPattern
For Each varTest In varTests
strReplaced = objRegex.Replace(CStr(varTest), "$1$3")
MsgBox strReplaced
Next varTest
End Sub
正则表达式的花式图:
答案 2 :(得分:1)
RegEx场景 - 如果您可以在字符串的开头处找到<某些数字><单个字母><单个空格> ,那么请更改模式到<单个字母><单个空格> 并用一个空格替换它。
Option Explicit
Sub stripAlphaSuffix()
Dim i As Long, regex As Object
Set regex = CreateObject("VBScript.RegExp")
With Worksheets("Sheet1")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
With regex
.Global = False
.MultiLine = False
.IgnoreCase = False
.Pattern = "^[0-9A-Z ]{3,8}"
End With
If regex.Test(.Cells(i, "A").Value2) Then
regex.Pattern = "[A-Z ]{2}"
.Cells(i, "A") = regex.Replace(.Cells(i, "A").Value2, Chr(32))
End If
Next i
End With
End Sub
答案 3 :(得分:1)
只是投入一个非RegEx解决方案:
Dim cel As Range
Dim word As String
For Each cel In Range("A1", Cells(Rows.Count, 1).End(xlUp))
word = Split(cel, " ")(0)
cel.Value = Replace(cel.Value, word, Left(word, Len(word) - 1))
Next
答案 4 :(得分:1)
由于VAL
从字母数字字符串中删除非数字,然后你可以尝试这个(它不会假定总有一个字符需要替换)
VAL("3250A")
=3250
如果它不需要附加其余的字符串,那会更优雅:)
Dim StrIn As String
Dim X
StrIn = "3250A WEST SEM"
X = Split(StrIn, Chr(32))
MsgBox Val(StrIn) & Right$(StrIn, Len(StrIn) - Len(X(0)))