Добрый вечер. Помогите, пожалуйста, "выдернуть" часть текста из ячейки. До этого работал только с функциями ПСТР, ЛЕВСИМВ и ПРАВСИМВ, но в данном случае задача осложняется неодинаковым количеством знаков в ячейке. Спасибо.
Добрый вечер. Помогите, пожалуйста, "выдернуть" часть текста из ячейки. До этого работал только с функциями ПСТР, ЛЕВСИМВ и ПРАВСИМВ, но в данном случае задача осложняется неодинаковым количеством знаков в ячейке. Спасибо.Сергей-К
Function Substring(Текст As String, Символ_разделитель As String, _ Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String '--------------------------------------------------------------------------------------- ' URL : http://www.planetaexcel.ru/tip.php?aid=54 ' Purpose : Выделяет из текста субстринг/и, ориентируясь по символам-разделителям ' Notes : Substring(текст; символ_разделитель; Начальный_Номер_фрагмента, Конечный_Номер_фрагмента), где ' текст - текст, который делим ' символ_разделитель - символ, который надо считать разделителем фрагментов ' Начальный_Номер_фрагмента - порядковый номер фрагмента, с которого нужна выборка ' Конечный_Номер_фрагмента - порядковый номер фрагмента, по который нужна выборка '--------------------------------------------------------------------------------------- On Error Resume Next Dim sArr() As String, li As Long sArr = Split(Application.Trim(Текст), Символ_разделитель) If Конечный_Номер_фрагмента > 0 Then Начальный_Номер_фрагмента = Начальный_Номер_фрагмента - 1 Конечный_Номер_фрагмента = Конечный_Номер_фрагмента - 1 For li = Начальный_Номер_фрагмента To Конечный_Номер_фрагмента Substring = IIf(li = Начальный_Номер_фрагмента, sArr(li), Substring & _ Символ_разделитель & sArr(li)) Next li Else Substring = Split(Application.Trim(Текст), _ Символ_разделитель)(Начальный_Номер_фрагмента - 1) End If End Function
[/vba]
Если всёж использовать одну UDF:
Код
=Substring(Substring(C2;"(";2;2);")";1;1)
Код
=Substring(Substring(C2;"(";3;3);")";1;1)
Код
=Substring(Substring(C2;")";2;2);" ";2;2)
Код
=Substring(Substring(C2;")";2;2);" ";5;5)
код: [vba]
Код
Function Substring(Текст As String, Символ_разделитель As String, _ Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String '--------------------------------------------------------------------------------------- ' URL : http://www.planetaexcel.ru/tip.php?aid=54 ' Purpose : Выделяет из текста субстринг/и, ориентируясь по символам-разделителям ' Notes : Substring(текст; символ_разделитель; Начальный_Номер_фрагмента, Конечный_Номер_фрагмента), где ' текст - текст, который делим ' символ_разделитель - символ, который надо считать разделителем фрагментов ' Начальный_Номер_фрагмента - порядковый номер фрагмента, с которого нужна выборка ' Конечный_Номер_фрагмента - порядковый номер фрагмента, по который нужна выборка '--------------------------------------------------------------------------------------- On Error Resume Next Dim sArr() As String, li As Long sArr = Split(Application.Trim(Текст), Символ_разделитель) If Конечный_Номер_фрагмента > 0 Then Начальный_Номер_фрагмента = Начальный_Номер_фрагмента - 1 Конечный_Номер_фрагмента = Конечный_Номер_фрагмента - 1 For li = Начальный_Номер_фрагмента To Конечный_Номер_фрагмента Substring = IIf(li = Начальный_Номер_фрагмента, sArr(li), Substring & _ Символ_разделитель & sArr(li)) Next li Else Substring = Split(Application.Trim(Текст), _ Символ_разделитель)(Начальный_Номер_фрагмента - 1) End If End Function
Function substring(s$, n%) As Variant Select Case n Case 1: substring = Split(Split(s, ")")(0), "(")(1) Case 2: substring = Split(Split(s, ")")(1), "(")(1) Case 3: substring = TimeValue(Right(Split(s, ":")(0), 2) & _ ":" & Left(Split(s, ":")(1), 2)) Case 4: substring = TimeValue(Right(Split(s, ":")(1), 2) & _ ":" & Left(Split(s, ":")(2), 2)) End Select End Function
Function substring(s$, n%) As Variant Select Case n Case 1: substring = Split(Split(s, ")")(0), "(")(1) Case 2: substring = Split(Split(s, ")")(1), "(")(1) Case 3: substring = TimeValue(Right(Split(s, ":")(0), 2) & _ ":" & Left(Split(s, ":")(1), 2)) Case 4: substring = TimeValue(Right(Split(s, ":")(1), 2) & _ ":" & Left(Split(s, ":")(2), 2)) End Select End Function