Страницы: 1
RSS
Извлечь из текста фрамент, размещенный в скобках
 
Уважаемые форумчане, всем доброго времени суток.
Как извлечь текст из скобок в ячейке, я справился без помощи, но как вытащить несколько текстов и ещё разделить их точкой с запятой... Такая задача оказалась для меня не в силах. Поэтому прошу вашей помощи. Может кто и сможет решить данную задачу.

К примеру в ячейке A1 есть текст:
Дорнит ЭКО 200 (Сертификат соответствия РОСС.RU.32001.04ИБФ1.ОСП09.05293; Паспорт качества на полотно нетканное марки «Дорнит ЭКО 200»); Труба гофрированная дренажная (Сертификат соответствия № РОСС.RU.КО01.Н00093); Щебень фр.5-20 (Сертификат соответствия № RU.МСС.207.399.33959; Паспорт № 561/А от 07.12.2020 года)

В ячейке B1, нужно что бы был только текст заключённый в скобках, разделённый символом ;
Сертификат соответствия РОСС.RU.32001.04ИБФ1.ОСП09.05293; Паспорт качества на полотно нетканное марки «Дорнит ЭКО 200»; Сертификат соответствия № РОСС.RU.КО01.Н00093; Сертификат соответствия № RU.МСС.207.399.33959; Паспорт № 561/А от 07.12.2020 года
 
=TRIM(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(
TRIM(
MID(SUBSTITUTE(SUBSTITUTE(A1;"(";";"&REPT(" ";LEN(A1)));")";REPT(" ";LEN(A1))&";");LEN(A1);LEN(A1))&";"&
MID(SUBSTITUTE(SUBSTITUTE(A1;"(";";"&REPT(" ";LEN(A1)));")";REPT(" ";LEN(A1))&";");3*LEN(A1);LEN(A1))&";"&
MID(SUBSTITUTE(SUBSTITUTE(A1;"(";";"&REPT(" ";LEN(A1)));")";REPT(" ";LEN(A1))&";");5*LEN(A1);LEN(A1))&";"&
MID(SUBSTITUTE(SUBSTITUTE(A1;"(";";"&REPT(" ";LEN(A1)));")";REPT(" ";LEN(A1))&";");7*LEN(A1);LEN(A1))
)
;" ";CHAR(1));";";" "));" ";"; ");CHAR(1);" "))


немного доработать можно но принцип понятен надеюсь. Если офис поновее, то можно покороче.
Изменено: БМВ - 23.01.2021 13:01:24
По вопросам из тем форума, личку не читаю.
 
БМВ, Спасибо дружище!
У меня бы ума такую формулу написать не хватило. Мне в ней разобраться даже сложно... Но я постараюсь.
Спасибо ещё раз огромное. Облегчил процесс )))
 
Поблагодарите и за пример, который Вы показать не захотели. Неужели та трудно состряпать пример и прикрепить к сообщению?
 
Ещё вариант с формулой
Код
=CONCATENATE(MID(A1;SEARCH("(";A1)+1;SEARCH(")";A1)-SEARCH("(";A1)-1);"; ";MID(RIGHT(A1;LEN(A1)-SEARCH(")";A1));SEARCH("(";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))+1;SEARCH(")";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-SEARCH("(";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-1);"; ";MID(RIGHT(RIGHT(A1;LEN(A1)-SEARCH(")";A1));LEN(RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-SEARCH(")";RIGHT(A1;LEN(A1)-SEARCH(")";A1))));SEARCH("(";RIGHT(RIGHT(A1;LEN(A1)-SEARCH(")";A1));LEN(RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-SEARCH(")";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))))+1;SEARCH(")";RIGHT(RIGHT(A1;LEN(A1)-SEARCH(")";A1));LEN(RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-SEARCH(")";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))))-SEARCH("(";RIGHT(RIGHT(A1;LEN(A1)-SEARCH(")";A1));LEN(RIGHT(A1;LEN(A1)-SEARCH(")";A1)))-SEARCH(")";RIGHT(A1;LEN(A1)-SEARCH(")";A1)))))-1))
 
UDF
Код
Function Skobki(cell$) As String
Dim mo As Object
Dim n As Integer
 With CreateObject("VBScript.RegExp")
   .Global = True
   .Pattern = "\(.+?(?=\))"
   Set mo = .Execute(cell)
   For n = 0 To mo.Count - 1
     Skobki = Skobki & Mid(mo(n), 2) & "; "
   Next
 End With
End Function
 
Код
=ОБЪЕДИНИТЬ("; ";1;ЕСЛИОШИБКА(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"(";СИМВОЛ(1));")";СИМВОЛ(1));СИМВОЛ(1);"</i><i>")&"</i></j>";"//i[position() mod 2 = 0]");""))
 
Тут была подобная тема
Страницы: 1
Наверх