Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вытянуть часть строки регулярными выражениями в переменнуг - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вытянуть часть строки регулярными выражениями в переменнуг (Макросы/Sub)
Вытянуть часть строки регулярными выражениями в переменнуг
ant6729 Дата: Воскресенье, 16.12.2018, 20:09 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 519
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Всем привет
Есть строки на листе ексель

10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | Bsw::Mappable::checkValues:a_sCheck=LttKnzTpaTrg=1
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | LvsTemTpmDeflt::mldTpaAufl()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | | LvsTpmSqlCrsTpaOnTe::openCursor:PARAMETER : |TeNam=1001286|
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | | SqlStat::checkDbRet:TRUE SqlCode:NotFound (gueltig:Ok|NotFound|MultFound Rows:0)
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | TomFrwWwsLgo::zubTe()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | LvsTemWemTeAvis::mld:TeStraOld=WELLE,BucheWe_TeStraLst=
10:05:17,230 0 ms 437 ms DEB | | | | | | | TemFrwUmpWe::mld()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | TemFrwUmpWe::mld:PlNamOut=FZG00009000, PlNamNeu=MZ1001AP000
Как регулярными выражениями в цикле вытянуть 230 в переменную в msgbox?
Знаю, как формулами, типа

[vba]
Код
m = Int(Left(s,
m = Split((Split(s, " ")(0)), ",")(1)
m = Int(Left(Split(s, ",")(1), 3))
[/vba]

Знаю, что скорее всего, в регулярных выражениях \d{3} - вытянет ту часть текста, которая нужна, т.е.цифры после запятой

Знаю, что for next понадобиться, но не знаю, как регулярные выражение в коде записать, прошу подскажите, пожалуйста.


Сообщение отредактировал ant6729 - Воскресенье, 16.12.2018, 23:02
 
Ответить
СообщениеВсем привет
Есть строки на листе ексель

10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | Bsw::Mappable::checkValues:a_sCheck=LttKnzTpaTrg=1
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | LvsTemTpmDeflt::mldTpaAufl()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | | LvsTpmSqlCrsTpaOnTe::openCursor:PARAMETER : |TeNam=1001286|
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | | SqlStat::checkDbRet:TRUE SqlCode:NotFound (gueltig:Ok|NotFound|MultFound Rows:0)
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | | TomFrwWwsLgo::zubTe()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | | LvsTemWemTeAvis::mld:TeStraOld=WELLE,BucheWe_TeStraLst=
10:05:17,230 0 ms 437 ms DEB | | | | | | | TemFrwUmpWe::mld()
10:05:17,230 0 ms 437 ms DEB | | | | | | | | TemFrwUmpWe::mld:PlNamOut=FZG00009000, PlNamNeu=MZ1001AP000
Как регулярными выражениями в цикле вытянуть 230 в переменную в msgbox?
Знаю, как формулами, типа

[vba]
Код
m = Int(Left(s,
m = Split((Split(s, " ")(0)), ",")(1)
m = Int(Left(Split(s, ",")(1), 3))
[/vba]

Знаю, что скорее всего, в регулярных выражениях \d{3} - вытянет ту часть текста, которая нужна, т.е.цифры после запятой

Знаю, что for next понадобиться, но не знаю, как регулярные выражение в коде записать, прошу подскажите, пожалуйста.

Автор - ant6729
Дата добавления - 16.12.2018 в 20:09
Roman777 Дата: Воскресенье, 16.12.2018, 20:29 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 929
Репутация: 117 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ant6729, а я смотрю на текст, но 220 нигде не вижу %)


Много чего не знаю!!!!
 
Ответить
Сообщениеant6729, а я смотрю на текст, но 220 нигде не вижу %)

Автор - Roman777
Дата добавления - 16.12.2018 в 20:29
ant6729 Дата: Воскресенье, 16.12.2018, 23:03 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 519
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Зрение...
Исправил)
230 хотел написать
 
Ответить
СообщениеЗрение...
Исправил)
230 хотел написать

Автор - ant6729
Дата добавления - 16.12.2018 в 23:03
Roman777 Дата: Понедельник, 17.12.2018, 09:39 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 929
Репутация: 117 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ant6729, В вашем случае это первое сочетание из 3х цифр:
[vba]
Код
Function CatchNum(s As String) As Long
    Dim objRegExp, SubobjMatches
         Set objRegExp = CreateObject("VBScript.RegExp")
        objRegExp.Global = True
        objRegExp.Pattern = "\d{3}"
        Set SubobjMatches = objRegExp.Execute(s)
        CatchNum = SubobjMatches(0).Value
End Function
Sub tss()
    MsgBox (CatchNum(Cells(1, 1)))
End Sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 17.12.2018, 09:40
 
Ответить
Сообщениеant6729, В вашем случае это первое сочетание из 3х цифр:
[vba]
Код
Function CatchNum(s As String) As Long
    Dim objRegExp, SubobjMatches
         Set objRegExp = CreateObject("VBScript.RegExp")
        objRegExp.Global = True
        objRegExp.Pattern = "\d{3}"
        Set SubobjMatches = objRegExp.Execute(s)
        CatchNum = SubobjMatches(0).Value
End Function
Sub tss()
    MsgBox (CatchNum(Cells(1, 1)))
End Sub
[/vba]

Автор - Roman777
Дата добавления - 17.12.2018 в 09:39
sboy Дата: Понедельник, 17.12.2018, 09:45 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2309
Репутация: 658 ±
Замечаний: 0% ±

Excel 2010
Или искать по запятой
[vba]
Код
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:,)(\d+)"
        'For '''
            MsgBox .Execute(text_)(0).Submatches(0)
        Next
End With
[/vba]
 
Ответить
СообщениеИли искать по запятой
[vba]
Код
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:,)(\d+)"
        'For '''
            MsgBox .Execute(text_)(0).Submatches(0)
        Next
End With
[/vba]

Автор - sboy
Дата добавления - 17.12.2018 в 09:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вытянуть часть строки регулярными выражениями в переменнуг (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!