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

Вход

Регистрация

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

 

= Мир MS Excel/Разделение текста на несколько колонок - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Разделение текста на несколько колонок
Puk Дата: Среда, 09.05.2012, 11:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Добрый день!
Возникла необходимость раделить текст на несколько колонок.

Сам текст (или см. в приложение):
Галина Вокола, ООО "Бублик"| 05.04.2012 08:13:34 | Мега текстс

Нужно, что бы всё, что находится после второй | переносилось на другую колонку.

Заранее благодарен.
К сообщению приложен файл: Book1.xlsx (9.1 Kb)
 
Ответить
СообщениеДобрый день!
Возникла необходимость раделить текст на несколько колонок.

Сам текст (или см. в приложение):
Галина Вокола, ООО "Бублик"| 05.04.2012 08:13:34 | Мега текстс

Нужно, что бы всё, что находится после второй | переносилось на другую колонку.

Заранее благодарен.

Автор - Puk
Дата добавления - 09.05.2012 в 11:44
Hugo Дата: Среда, 09.05.2012, 11:57 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
UDF:

[vba]
Code
Function Substring(Текст As String, Символ_разделитель As String, _
                      Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String
'---------------------------------------------------------------------------------------
' 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]Для нерусских Экселей (на русских вероятно вместо "," нужно писать ";"):
B2 =Substring(A2,"|",1,2)&"|"
C2 =Substring(A2,"|",3,100)
(если последний фрагмент всегда один, то можно писать Substring(A2,"|",3,3), если их количество неизвестно - то ставьте последний аргумент с запасом).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеUDF:

[vba]
Code
Function Substring(Текст As String, Символ_разделитель As String, _
                      Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String
'---------------------------------------------------------------------------------------
' 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]Для нерусских Экселей (на русских вероятно вместо "," нужно писать ";"):
B2 =Substring(A2,"|",1,2)&"|"
C2 =Substring(A2,"|",3,100)
(если последний фрагмент всегда один, то можно писать Substring(A2,"|",3,3), если их количество неизвестно - то ставьте последний аргумент с запасом).

Автор - Hugo
Дата добавления - 09.05.2012 в 11:57
ABC Дата: Среда, 09.05.2012, 11:58 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
можно так:
B2
Code
=ПСТР(A2;1;ПОИСК("#";ПОДСТАВИТЬ(A2;"|";"#";2)))

C2
Code
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A2;B2;""))
К сообщению приложен файл: Book1-1.xls (18.5 Kb)


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениеможно так:
B2
Code
=ПСТР(A2;1;ПОИСК("#";ПОДСТАВИТЬ(A2;"|";"#";2)))

C2
Code
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A2;B2;""))

Автор - ABC
Дата добавления - 09.05.2012 в 11:58
Puk Дата: Среда, 09.05.2012, 12:07 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Cпасибо большое!!! biggrin biggrin
Вы - лучшие! cool
 
Ответить
СообщениеCпасибо большое!!! biggrin biggrin
Вы - лучшие! cool

Автор - Puk
Дата добавления - 09.05.2012 в 12:07
  • Страница 1 из 1
  • 1
Поиск:

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