добрый вечер,фактически ,расширяя файл-пример,добавив еще три строчки в файл-пример,мы вернулись,используя уже uuu3 в столбце N,- к варианту Hugo,только в терминах регулярки.
Код
Function uuu3(t$)
Dim t1$
With CreateObject("VBScript.RegExp")
.Pattern = "-([^/]+)/"
If .test(t) Then t1 = .Execute(t)(0).Submatches(0) Else t1 = t
If IsNumeric(t1) Then uuu3 = CLng(t1) Else uuu3 = t1
End With
End Function
доброго времени суток,в завершение обсуждения,добавил свой вариант uuu4 в столбце Q
Код
Function uuu4(t$)
Dim t1$
With CreateObject("VBScript.RegExp")
.Pattern = "-([^/]+)/"
If .test(t) Then t1 = .Execute(t)(0).Submatches(0) Else t1 = t
.Pattern = "^0+": If .test(t1) Then uuu4 = .Replace(t1, "") Else uuu4 = t1
End With
End Function
итоговый вариант uuu5 в столбце R, соответствует -как надо в столбце C
Код
Function uuu5(t$)
Dim t1$
With CreateObject("VBScript.RegExp")
.Pattern = "-([^/]+)/"
If .test(t) Then t1 = .Execute(t)(0).Submatches(0) Else t1 = t
.Pattern = "^0+": If .test(t1) Then uuu5 = Replace(.Replace(t1, ""), "-0", "-") Else uuu5 = t1
End With
End Function
next777pro,для удобства тестирования Вам чуть изменил и прокоментировал вариант от MBT tt до более удобных Вам версий: функций uuu6 в T и uuu7 в V,uuu5 мой прежний вариант в R,отличие в том,что я избавляюсь,от ведущих нулей в конце кода,а MBT в начале кода,вариант от MBT интересный и оригинальный для тех,кто интересуется RegExp:
Код
Function uuu5(t$)
Dim t1$
With CreateObject("VBScript.RegExp"): .Pattern = "-([^/]+)/"
If .test(t) Then t1 = .Execute(t)(0).Submatches(0) Else t1 = t
.Pattern = "^0+": If .test(t1) Then uuu5 = Replace(.Replace(t1, ""), "-0", "-") Else uuu5 = t1
End With
End Function
Код
Function uuu6$(t$)
Dim t1$
With CreateObject("VBScript.Regexp"): .Global = True: .Pattern = "(^|\D)0+": t1 = .Replace(t, "$1")
.Pattern = "-([^/]+)/"
If .test(t1) Then uuu6 = .Execute(t1)(0).Submatches(0) Else uuu6 = t
End With
End Function
Код
Function uuu7$(t$)
Dim t1$
With CreateObject("VBScript.Regexp"): .Global = True: .Pattern = "(^|\D)0+": If .test(t) Then t1 = .Replace(t, "$1") Else t1 = t
If t1 <> "" Then uuu7 = Split(Split(t1, "-")(1), "/")(0) Else uuu7 = t1
End With
End Function
Можно наверно и без макроса, через Ctrl+H. Записал обработку выделенного диапазона, макрорекордером,.
Код
Sub Макрос1()
Selection.Replace What:=" ", Replacement:=""
Selection.Replace What:="2-", Replacement:=""
Selection.Replace What:="/*", Replacement:=""
End Sub
добрый день,от пробелов избавляются, обычно,с помощью Trim или обычной Replace,дополнительно,чуть изменил вышеуказанную uuu7,добавил двойку в код( в Split):
Код
Function uuu7$(t$)
Dim t1$
With CreateObject("VBScript.Regexp"): .Global = True: .Pattern = "(^|\D)0+": If .test(t) Then t1 = .Replace(t, "$1") Else t1 = t
If t1 <> "" Then uuu7 = Trim(Split(Split(t1, "-", 2)(1), "/")(0)) Else uuu7 = t1
End With
End Function
добавил для иллюстрации к #38,кнопка test31,данные в A12
Код
Sub test31()
Dim t$: t = Range("A12")
With CreateObject("VBScript.Regexp"): .Global = True: .Pattern = "(^|\d)\s+": MsgBox .Replace(t, "$1")
MsgBox Trim(Replace(t, "0 ", "0"))
End With
End Sub
Возможно, я что-то не так понял, но у меня так получилось
Код
Function tt$(text As String)
With CreateObject("VBScript.Regexp")
.Global = True
.Pattern = "(^|\D)0+"
tt = .Replace(text, "$1")
.Pattern = "(^.+?-)|(/[^/]+)"
tt = .Replace(tt, " ")
End With
End Function