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

Вход

Регистрация

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

 

= Мир MS Excel/Парсинг текстовой строки (обрезка строки) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Парсинг текстовой строки (обрезка строки) (Макросы Sub)
Парсинг текстовой строки (обрезка строки)
Murdoc Дата: Пятница, 07.03.2014, 12:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброй всем пятницы. К сожалению поиск не дал конкретных результатов или похожих примеров. Помогите пожалуйста разобраться с написанием макроса для обработки текстовой строки и вычленению из нее необходимой информации.

Строка может быть двух видов:
[текст1][ABCD_**][текст2][текст3]текст4
или [текст1][**-ABCD_**][текст2][текст3]текст4

ABCD - то что нужно вычленить из строки, количество символов неизвестно

В теории достаточно будет сначала обрезать все слева до первого вхождения символа "_", а потом пройтись по полученому куску уже справа на лево до первого вхождения символа "[" или же символа "-". Это в теории, как реализовать это на практике пока даже не знаю в какую сторону копать. Буду рад любой помощи.

Заранее спасибо.
 
Ответить
СообщениеДоброй всем пятницы. К сожалению поиск не дал конкретных результатов или похожих примеров. Помогите пожалуйста разобраться с написанием макроса для обработки текстовой строки и вычленению из нее необходимой информации.

Строка может быть двух видов:
[текст1][ABCD_**][текст2][текст3]текст4
или [текст1][**-ABCD_**][текст2][текст3]текст4

ABCD - то что нужно вычленить из строки, количество символов неизвестно

В теории достаточно будет сначала обрезать все слева до первого вхождения символа "_", а потом пройтись по полученому куску уже справа на лево до первого вхождения символа "[" или же символа "-". Это в теории, как реализовать это на практике пока даже не знаю в какую сторону копать. Буду рад любой помощи.

Заранее спасибо.

Автор - Murdoc
Дата добавления - 07.03.2014 в 12:01
Hugo Дата: Пятница, 07.03.2014, 14:00 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Sub tt()
     Dim s$, rez$, arr
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     rez = Split(s, "_")(0)
     rez = Replace(rez, "-", "[")
     arr = Split(rez, "[")
     rez = arr(UBound(arr))
     MsgBox rez
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Sub tt()
     Dim s$, rez$, arr
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     rez = Split(s, "_")(0)
     rez = Replace(rez, "-", "[")
     arr = Split(rez, "[")
     rez = arr(UBound(arr))
     MsgBox rez
End Sub
[/vba]

Автор - Hugo
Дата добавления - 07.03.2014 в 14:00
ikki Дата: Пятница, 07.03.2014, 15:04 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
[vba]
Код
Sub tt()
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     With CreateObject("vbscript.regexp")
         .Pattern = "[-[]([^-[]*?)_"
         MsgBox .Execute(s)(0).submatches(0)
     End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение[vba]
Код
Sub tt()
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     With CreateObject("vbscript.regexp")
         .Pattern = "[-[]([^-[]*?)_"
         MsgBox .Execute(s)(0).submatches(0)
     End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 07.03.2014 в 15:04
ikki Дата: Пятница, 07.03.2014, 15:29 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
или даже ещё проще
[vba]
Код
Sub tt()
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     With CreateObject("vbscript.regexp")
         .Pattern = "[^-[]*?(?=_)"
         MsgBox .Execute(s)(0)
     End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеили даже ещё проще
[vba]
Код
Sub tt()
     s = "[текст1][ABCD_**][текст2][текст3]текст4"
     's = "[текст1][**-ABCD_**][текст2][текст3]текст4"
     With CreateObject("vbscript.regexp")
         .Pattern = "[^-[]*?(?=_)"
         MsgBox .Execute(s)(0)
     End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 07.03.2014 в 15:29
Murdoc Дата: Пятница, 07.03.2014, 17:15 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем огромное спасибо за помощь, использовал вариант предложенный Hugo. Все работает как было необходимо. Тему можно закрывать
 
Ответить
СообщениеВсем огромное спасибо за помощь, использовал вариант предложенный Hugo. Все работает как было необходимо. Тему можно закрывать

Автор - Murdoc
Дата добавления - 07.03.2014 в 17:15
RAN Дата: Пятница, 07.03.2014, 20:50 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ну, хоть на форуме The_Prist отписался, что тутошние решения ему больше ндравятся.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНу, хоть на форуме The_Prist отписался, что тутошние решения ему больше ндравятся.

Автор - RAN
Дата добавления - 07.03.2014 в 20:50
ikki Дата: Пятница, 07.03.2014, 21:54 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а где эта историческая отписка?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеа где эта историческая отписка?

Автор - ikki
Дата добавления - 07.03.2014 в 21:54
RAN Дата: Пятница, 07.03.2014, 22:30 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТутЯ

Автор - RAN
Дата добавления - 07.03.2014 в 22:30
ikki Дата: Пятница, 07.03.2014, 22:34 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
не нашёл ничего подобного.

upd. всё, понял. ступил поначалу.
думал - сам The_Prist сказал нечто подобное :D
понять-то можно было именно так.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Пятница, 07.03.2014, 22:36
 
Ответить
Сообщениене нашёл ничего подобного.

upd. всё, понял. ступил поначалу.
думал - сам The_Prist сказал нечто подобное :D
понять-то можно было именно так.

Автор - ikki
Дата добавления - 07.03.2014 в 22:34
RAN Дата: Пятница, 07.03.2014, 22:39 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Звиняйте! :D

PS Саш, ссылка только для тебя. :)

PPS Для Администрации - ссылка по просьбе зрителей. :p


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 07.03.2014, 22:45
 
Ответить
СообщениеЗвиняйте! :D

PS Саш, ссылка только для тебя. :)

PPS Для Администрации - ссылка по просьбе зрителей. :p

Автор - RAN
Дата добавления - 07.03.2014 в 22:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Парсинг текстовой строки (обрезка строки) (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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