Страницы: 1
RSS
Извлечение текста между запятыми
 
Добрый день!
Подскажите как с помощью функций вытащить текст между запятыми, и расставить в отдельные ячейки?Пример:
MOTOR: 117, 13, PEDMT, 56KW, 1400V, 32A, 50HZ, RR-S, BTB, CS, R-TRM/CS, PHOENIX 456, T8, 22 X 28, MDPN-S2
 
Обязательно функциями? Инструмент Текст_по_столбцам не подходит?
 
тест по колонкам, разделитель запятая
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
vikttur именно функциями, так как этими данными буду оперировать в другом листе.
 
Формулу писать прямо в сообщении с возможными ошибками или пример все же дадите?
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ($A1;":";",");",";ПОВТОР(" ";50));СТОЛБЕЦ(A1)*50;50))
Копировать по строке. Если вдруг чего не так - сами виноваты.
 
Вот пример.
 
Если там активно используются макросы, так может проще и удобнее UDF?
Код
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

Комбинацией из двух можно в первом фрагменте выкинуть всё что до двоеточия (и его) - если конечно нужно выкинуть.
Изменено: Hugo - 20.05.2018 12:40:39
 
Честно говоря в  этом не разбираюсь...Макросы не мои  
 
vikttur, не работает..
 
vikttur, работает, я проверил :)
 
в файл-примере не указано,как надо, еще вариант макроса

 
Код
Sub test()
  Dim t$, i&, j&
 With CreateObject("VBScript.RegExp"): .Pattern = "[^,]+": .Global = True
 For j = 2 To Range("A" & Rows.Count).End(xlUp).Row:   t = Range("B" & j)
   For i = 0 To .Execute(t).Count - 1: Range("E" & j).Offset(, i) = .Execute(t)(i): Next i, j
 End With
End Sub
Изменено: кузя1972 - 20.05.2018 18:10:25
 
кузя1972-SV2015, а в следующем сообщении будете писать о том, что специалисты дают варианты, а правильного примера нет...
 
vikttur, ничего подобного и не собирался писать.
 
Задача выбрать данные из одного листа между разделителем, и записать их в соответствующей ячейке другого листа.  
 
Цитата
foxster_72 написал: ничего подобного и не собирался писать.
Обращайте внимание, к кому обращение
 
Цитата
записать их в соответствующей ячейке другого листа
Соответствующие - это в какие?
 
Kuzmich, Заключённые между запятыми описания соответствуют колонке в Листе номер 2
 
Цитата
foxster_72 написал:
Заключённые между запятыми описания соответствуют колонке
это только для вас соответствуют, как разнести 10 позиций восьмой строки на 16 позиций второго листа
Лень двигатель прогресса, доказано!!!
 
Сергей, Собственно никак. Это уже проблемы того кто состовлял описание...Мне же нужно чтобы была рабочая программа.А ошибки фиксить буду потом.
Страницы: 1
Наверх