删除特殊字符VBA前后的字符
我有一组带有字符串的数据,例如1782_eqjobs.hostname、519_fid_quant.hostname 我希望能够将所有字符保留在第一个“u”和“.”中,然后删除其余字符 比如, 1782_eqjobs.hostname->eqjobs 519\u fid\u quant.hostname->fid\u quant删除特殊字符VBA前后的字符,vba,Vba,我有一组带有字符串的数据,例如1782_eqjobs.hostname、519_fid_quant.hostname 我希望能够将所有字符保留在第一个“u”和“.”中,然后删除其余字符 比如, 1782_eqjobs.hostname->eqjobs 519\u fid\u quant.hostname->fid\u quant 是否可以使用宏来执行此操作?您可以使用 _(.*)\. 然后提取匹配的第1组。这有点脆弱,因为您提供的布局中的所有字符串都没有一些文本的多个实例。 我指的是实施,例
是否可以使用宏来执行此操作?您可以使用
_(.*)\.
然后提取匹配的第1组。这有点脆弱,因为您提供的布局中的所有字符串都没有一些文本的多个实例。
我指的是实施,例如:
Option Explicit
Public Sub test()
Debug.Print GetString("1782_eqjobs.hostname")
End Sub
Public Function GetString(ByVal inputString As String) As Variant
Dim matches As Object
With CreateObject("vbscript.regexp")
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = "_(.*)\."
If .test(inputString) Then
Set matches = .Execute(inputString)
GetString = matches(0).SubMatches(0)
Exit Function
End If
End With
GetString = CVErr(xlErrNA)
End Function
您可以使用
_(.*)\.
然后提取匹配的第1组。这有点脆弱,因为您提供的布局中的所有字符串都没有一些文本的多个实例。
我指的是实施,例如:
Option Explicit
Public Sub test()
Debug.Print GetString("1782_eqjobs.hostname")
End Sub
Public Function GetString(ByVal inputString As String) As Variant
Dim matches As Object
With CreateObject("vbscript.regexp")
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = "_(.*)\."
If .test(inputString) Then
Set matches = .Execute(inputString)
GetString = matches(0).SubMatches(0)
Exit Function
End If
End With
GetString = CVErr(xlErrNA)
End Function
也许
Sub CleanUp()
On Error Resume Next
For Each c In Selection
c.Value = Mid(c.Value, InStr(1, c.Value, "_") + 1, InStr(1, c.Value, ".") - InStr(1, c.Value, "_") - 1)
Next c
End Sub
也许
Sub CleanUp()
On Error Resume Next
For Each c In Selection
c.Value = Mid(c.Value, InStr(1, c.Value, "_") + 1, InStr(1, c.Value, ".") - InStr(1, c.Value, "_") - 1)
Next c
End Sub
这个简单的公式可以做到:
=MID(LEFT(A1,FIND(".",A1)-1),FIND("_",A1)+1,LEN(A1))
这个简单的公式可以做到:
=MID(LEFT(A1,FIND(".",A1)-1),FIND("_",A1)+1,LEN(A1))
您可以在工作表或VBA中使用工作表函数 假设字符串在A1范围内 单元格中的函数如下所示:
=MID(A1,FIND("_",A1,1)+1,(FIND(".",A1,1)-FIND("_",A1,1))-1)
要在VBA中使用它,您需要:
worksheetfunction.MID(A1,FIND("_",A1,1)+1,(FIND(".",A1,1)-FIND("_",A1,1))-1)
希望有帮助
Phil您可以在工作表或VBA中使用工作表函数 假设字符串在A1范围内 单元格中的函数如下所示:
=MID(A1,FIND("_",A1,1)+1,(FIND(".",A1,1)-FIND("_",A1,1))-1)
要在VBA中使用它,您需要:
worksheetfunction.MID(A1,FIND("_",A1,1)+1,(FIND(".",A1,1)-FIND("_",A1,1))-1)
希望有帮助
菲尔看。是的,vba会做的。公式也是如此。有很多方法可以做到这一点。请参阅。是的,vba可以做到这一点。公式也是如此。有很多方法可以做到这一点。对不起,我对使用VBA完全陌生。你能解释一下你的意思吗?对不起,我对使用VBA完全陌生。你能解释一下你的意思吗?
worksheetfunction.MID(A1,FIND(“,”,A1,1)+1,(FIND(“,”,A1,1)-FIND(“,”,A1,1))-1)
不起作用。首先,Mid是一个自然的vba函数。其次,所有的查找
都需要工作表功能。
每个。但是为什么不使用INSTR
?但是你会得到@mrkrister的答案。从那以后我学到了很多,我同意我以前的答案很糟糕。我必须向大家道歉。谢谢@ScottCraner纠正我的错误。工作表函数。MID(A1,FIND(“,”,A1,1)+1,(FIND(“,”,A1,1)-FIND(“,”,A1,1))-1)
将不起作用。首先,Mid是一个自然的vba函数。其次,所有的查找
都需要工作表功能。
每个。但是为什么不使用INSTR
?但是你会得到@mrkrister的答案。从那以后我学到了很多,我同意我以前的答案很糟糕。我必须向大家道歉。谢谢你@ScottCraner纠正我的错误。