Страницы: 1
RSS
получить часть строки после символов в VBA
 
Доброго дня всем!

Имею текст в ячейке, вида:
249234792762\\12412584935374\\1231242195982184\\324237423588­2358

Он служит неким адресом строки,
и я использую его в макросе.

Нужно средствами VBA (Mid? InStr? но я затрудняюсь сочинить формулу)
получить кусок строки от ПЕРВОГО знака "\\" (включительно) до ВТОРОГО "\\" (не включительно),
чтобы на выходе получилось:
\\12412584935374

вообще строки у меня бывают разные,
но во всех нужно именно от первого "\\" до второго "\\".

предполагаемый шаблон кода:
Код
Sub aaa()
Dim _
StrOld as String, _
StrNew as String
StrOld = 249234792762\\12412584935374\\1231242195982184\\3242374235882358 (или ссылка на ячейку - не важно)
StrNew = ...
Изменено: RazorBaze - 12.03.2018 11:28:52
 
Цитата
RazorBaze написал:
Mid? InStr? но я затрудняюсь сочинить формулу
тут никто не осудит если вы попытаетесь и продемонстрируете что у вас не получается, хотя может и получится сразу. Уверуйте в свои силы.
По вопросам из тем форума, личку не читаю.
 
Код
iStr = "\\" & Split(Range("A1"), "\\")(1)
Согласие есть продукт при полном непротивлении сторон
 
На выбор:
Код
Sub InMidStr1()
Dim s
s = "249234792762\\12412584935374\\1231242195982184\\324237423588­2358"
MsgBox "\\" & Mid(s, 1, InStr(1, s, "\\", 1) - 1)
End Sub
Sub InMidStr2()
Dim s
s = "249234792762\\12412584935374\\1231242195982184\\324237423588­2358"
MsgBox "\\" & Split(s, "\\")(0)
End Sub

вторым кодом легко можно получить любую часть строки. Но не лишним будет проверять - есть ли эти самые слеши вообще.
Изменено: Дмитрий Щербаков - 12.03.2018 11:35:07 (что-то форум подглючивает...)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, ребят) чуть позже проверю

БМВ, я знаю, что могу показаться немного наглым) но я правда стараюсь не лезть на форум с каждым вопросом.
...
второй вариант мне больше подошёл, в исполнении Sanja
Изменено: RazorBaze - 12.03.2018 14:50:24
 
Цитата
RazorBaze написал:
что могу показаться немного наглым
я не об этом. Просто если вы были так близки указав нужные функции, то  можно сделать следующий шаг. Пусть будет не эффективно, длинно , но Ваше!

Дмитрий Щербаков, Вы немного ошиблись, там нужна вторая группа, у Вас первая.  Нужно считать и где начало и сколько выделять, что становится заморочно при наличии второго варианта, с поправкой на (1)/
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
там нужна вторая группа, у Вас первая
Спасибо, проглядел. Тогда для первого кода так:
Код
Sub InMidStr1()
Dim s
s = "249234792762\\12412584935374\\1231242195982184\\324237423588­2358"
MsgBox Mid(s, InStr(1, s, "\\", 1), InStr(InStr(1, s, "\\", 1) + 2, s, "\\", 1) - InStr(1, s, "\\", 1))
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
во всех нужно именно от первого "\\" до второго "\\".
А количество цифр в этой части текста всегда 14 ?
 
Kuzmich, нет - забыл уточнить: текст случайный.
и предполагается, что я употребляю "\\" только для его разделения.
 
добрый день,вариант функций в D1 и D3
Код
Function Flesh$(text$)
With CreateObject("VBScript.RegExp"): .Pattern = "[^\\]+": .Global = True
   Flesh = "\\" & .Execute(text)(1)
End With
End Function
Код
Function Flesh2$(text$)
With CreateObject("VBScript.RegExp"): .Pattern = "\\\\\d+(?=\\)"
   Flesh2 = .Execute(text)(0)
End With
End Function
Изменено: кузя1972 - 12.03.2018 16:32:50
 
кузя1972, пользовательская функция для такой процедуры - пожалуй, слишком экстремально))
спасибо! но мне больше вариант Sanja по душе.

к тому же результаты нужны мне только для макроса (в смысле, они не публикуются в ячейках).
Изменено: RazorBaze - 12.03.2018 16:39:30
Страницы: 1
Наверх