我有一组带有字符串的数据,例如1782_eqjobs.hostname,519_fid_quant.hostname。
我希望能够将所有字符保留在第一个“ _”和“。”之内,然后删除其余字符。
例如;
1782_eqjobs.hostname-> eqjobs
519_fid_quant.hostname-> fid_quant
是否可以使用宏来执行此操作?
答案 0 :(得分:1)
您可以使用
的正则表达式模式_(.*)\.
,然后提取匹配的组1。由于所有字符串都位于您提供的布局中,而没有多个_ some text .
我的意思是这样的实现:
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 :(得分:1)
答案 2 :(得分:0)
也许..
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
答案 3 :(得分:0)
您可以在工作表或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)
希望有帮助!
菲尔