Страницы: Пред. 1 2
RSS
Обрезать слева и справа лишнее, код удаления по бокам
 
Цитата
sv2013 написал: соответственно надо?(7 2 7)
не понимаю, что надо - надо вообще то оставить
7
2
7
Изменено: next777pro - 01.08.2016 19:14:20
 
добрый вечер,фактически ,расширяя файл-пример,добавив еще три строчки в файл-пример,мы вернулись,используя уже 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
 
Изменено: sv2013 - 30.07.2016 00:05:28
 
доброго времени суток,в завершение обсуждения,добавил свой вариант 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
Изменено: sv2013 - 30.07.2016 01:16:16
 
итоговый вариант 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
Изменено: sv2013 - 30.07.2016 09:31:53
 
Не проще сразу убирать лидирующие нули?
Код
Function tt$(text As String)
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "(^|\D)0+"
        tt = .Replace(text, "$1")
    End With
End Function



 
МВТ, sv2013, всем большое спасибо, проверю завтра, работа не дает времени даже проверить  )
 
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
Изменено: sv2013 - 31.07.2016 05:52:56
 
sv2013, 5 , 6 подошел
а седьмой для некоторых отдельных случаев буду использовать

еще вопрос как убрать пробелы
2-0   170-1200/17/2014 _ g
170-1200
 
Можно наверно и без макроса, через 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
Изменено: sv2013 - 31.07.2016 10:01:42
 
добавил для иллюстрации к #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
Изменено: sv2013 - 31.07.2016 14:16:54
 
Цитата
sv2013 написал:
добавил для иллюстрации к #38,кнопка test31
большое спасибо, отлично получилось
 
Возможно, я что-то не так понял, но у меня так получилось
Код
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



 
МВТ, большое спасибо
пробелы не убрал в случае
2-0   170-1200/17/2014 _ g
Изменено: next777pro - 31.07.2016 23:15:05
 
Цитата
gling написал:
через Ctrl+H
пользовался таким, но не всегда подходит
 
next777pro, а самостоятельно Trim добавить, по аналогии с уже предложенными вариантами?
Страницы: Пред. 1 2
Наверх