删除特殊字符VBA之前和之后的字符

时间:2018-11-08 15:00:37

标签: vba

我有一组带有字符串的数据,例如1782_eqjobs.hostname,519_fid_quant.hostname。

我希望能够将所有字符保留在第一个“ _”和“。”之内,然后删除其余字符。

例如;

1782_eqjobs.hostname-> eqjobs

519_fid_quant.hostname-> fid_quant

是否可以使用宏来执行此操作?

4 个答案:

答案 0 :(得分:1)

您可以使用

的正则表达式模式
_(.*)\.

,然后提取匹配的组1。由于所有字符串都位于您提供的布局中,而没有多个_ some text .

实例,因此这有点脆弱

Try it

我的意思是这样的实现:

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)

这个简单的公式可以做到:

=MID(LEFT(A1,FIND(".",A1)-1),FIND("_",A1)+1,LEN(A1))

enter image description here

答案 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)

希望有帮助!

菲尔