11.06.2015

Excel: разделяем слипшийся текст

Работа с текстом
Опубликовано: 11.06.2015 | 3632

 

Случается, что содержание одного столбца нужно разбить на несколько. Например:

 
  • слишком обширное описание товара (а нужно, чтоб наименование, характеристики и актуальное наличие были разбиты);
  • полный адрес в одном столбце (а нужно, чтоб индекс, область, район и прочие данные были разбиты);
  • ФИО в одном столбце (а нужно – в отдельных).

Какая бы ситуация ни сложилась у вас, есть несколько способов разделить слипшийся текст.

Задача №1: Разбить текст по столбцам

Решение: Выделите нужные ячейки, перейдите в меню ДанныеТекст по столбцам.

Текст по столбцам

В появившемся окне Мастер текстов (разбора) укажите формат данных:

  • с разделителями – в случае, когда содержимое будущих отдельных столбцов разделяется каким-либо символом (укажите, каким именно).

В случае, если в строках есть нагромождения пробелов, стоит поставить галочку «Считать последовательные разделители одним». Ограничитель строк пригодится вам, если в ячейках есть сочетания, которые не нужно делить (например, название завода изготовителя, заключенное в кавычки, и т.д.).

Мастер текстов

  • фиксированной ширины – если вы хотите задать произвольную ширину столбца:

Мастер разбора текста

Перейдя к третьему шагу, вы должны назначить столбцам подходящий формат:

  • Общий – самый универсальный, сохранит данные в исходном виде.
  • Дата – для столбцов, где указан день-месяц-год (порядок значений вы также выберете самостоятельно).
  • Текстовый – незаменим для ячеек с числовыми данными, которые Excel должен воспринимать как текст. Пример: если столбцу с номерами банковских счетов не назначить текстовый формат, цифры округлятся до 15-ти символов – офис распознает их как числа.

Задача №2: Выборочно выдернуть слова из текста

Для того чтобы сделать это автоматически, воспользуйтесь редактором Visual Basic (вызов горячими клавишами Alt+F11): откройте новый модуль (Insert  Module) и вставьте следующий текст функции:

Function Substring(Txt, Delimiter, n) As String
Dim x As Variant
x = Split(Txt, Delimiter)
If n > 0 And n - 1 <= UBound(x) Then
Substring = x(n - 1)
Else
Substring = ""
End If
End Function

Далее идем в меню Формулы → Вставить функцию, выбираем категорию «Определенные пользователем», применяем синтаксис =SUBSTRING и указываем значения:

  • Txt – адрес ячейки с нужным текстом.
  • Delimeter – разделяющий знак (запятая, тире, пробел и т.д.).
  • N – порядковый номер фрагмента, который нужно «выдернуть».

=SUBSTRING

Задача №3: Разделить текст без пробелов

Если о знаках-разделителях речи даже не идет – то есть текст абсолютно слипшийся (например, ФИО «ПетровскийАндрейИванович»), используйте следующую макрофункцию:

Function CutWords(Txt As Range) As String
Dim Out$
If Len(Txt) = 0 Then Exit Function
Out = Mid(Txt, 1, 1)

For i = 2 To Len(Txt)
If Mid(Txt, i, 1) Like "[a-zа-я]" And Mid(Txt, i + 1, 1) Like "[A-ZА-Я]" Then
Out = Out & Mid(Txt, i, 1) & " "
Else
Out = Out & Mid(Txt, i, 1)
End If
Next i
CutWords = Out
End Function

CutWords аналогично добавляется в редактор Visual Basic, потом выбирается среди функций, определенных пользователем, и автоматически расставляет пробелы перед заглавными буквами.

Разделение текста

Читайте нас дальше, чтобы работа с Excel давалась ещё легче.

Подготовлено при использовании материалов www.planetaexcel.ru



Статьи по теме