如何删除某个字符之前的文本?

时间:2018-09-20 14:45:46

标签: excel vba excel-vba

假设我具有以下值:

1 min 7 sec
23 sec
6 hours 10 min 14 sec

我想返回:

7 sec
23 sec
14 sec

在VBA中有没有办法做到这一点?

如果不使用秒,分钟或小时,则可能不会始终存在。

即如果有60秒,只会说1分钟。如果恰好有60分钟,那只会说1个小时。

2 个答案:

答案 0 :(得分:7)

这里是使用正则表达式的方法。它寻找一个数字空间秒,如果找不到则返回一个连字符。修改以适合。

修改了代码以纳入@Mathieu Guindon的建议。 +查找一个或多个实例,*查找零个或多个实例。

Function Regex1(v As Variant) As String

With CreateObject("vbscript.regexp")
    .Global = True
    .Pattern = "\d+\s*sec"
    If .Test(v) Then
        Regex1 = .Execute(v)(0)
    Else
        Regex1 = "-"
    End If
End With

End Function

答案 1 :(得分:0)

Function POP(strInput As String) As String

Dim a() As String

a = Split(strInput, " ")

If UBound(a) > 0 Then

    POP = a(UBound(a) - 1) & " " & a(UBound(a))

Else

    POP = a(UBound(a))

End If

Erase a

End Function