Вероятно, это уже случалось с вами раньше: вы получаете данные для своего рабочего листа, и один из столбцов включает имена. Единственная проблема в том, что все имена сгруппированы вместе. Например, ячейка содержит «Аллен Вятт»,

но вы бы предпочли, чтобы имя было в одном столбце, а фамилия — в соседнем столбце справа. Как разделить имена?

Вы можете легко использовать функцию «Текст в столбцы» в Excel, чтобы разделить данные. Просто выполните следующие действия:

  1. Выберите диапазон ячеек, который вы хотите разделить.

  2. Выберите «Текст в столбцы» в меню «Данные». Excel запускает мастер преобразования текста в столбцы. (См. Рис. 1.)

  3. Выберите, будет ли выбранный текст фиксированной шириной или с разделителями.

(В случае пробела между именем и фамилией текст будет разделен.)

  1. Щелкните Далее.

  2. Укажите разделители, которые должен распознавать Excel. В случае разделения имен необходимо убедиться, что вы используете пробелы в качестве разделителей.

  3. Щелкните Готово.

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

Если вы не хотите полностью распределять данные по столбцам, вам нужно будет использовать макрос. Например, если ячейка содержит «Джон Дэвис, эсквайр», то использование функции «Текст в столбцы» приведет к распределению данных по трем столбцам: первый содержит «Джон», второй — «Дэвис» (с запятая), а третий содержит «Esq.» Если вы предпочитаете, чтобы данные были разделены на два столбца («Джон» в одном и «Дэвис, эсквайр» в другом, то вам будет полезен следующий макрос:

Sub PullApart()

Dim FirstCol As Integer, FirstRow As Integer     Dim RowCount As Integer     Dim ThisRow As Integer     Dim j As Integer, k As Integer     Dim MyText As String

FirstCol = ActiveWindow.RangeSelection.Column     FirstRow = ActiveWindow.RangeSelection.Row     RowCount = ActiveWindow.Selection.Rows.Count

For j = 1 To RowCount         ThisRow = FirstRow + j - 1         MyText = Cells(ThisRow, FirstCol).Text         k = InStr(MyText, " ")

If k > 0 Then             Cells(ThisRow, FirstCol + 1).Value = Mid(MyText, k + 1)

Cells(ThisRow, FirstCol).Value = Left(MyText, k - 1)

End If     Next j End Sub

Этот макрос исследует каждую ячейку и оставляет все до первого пробела в выбранной ячейке и перемещает все после пробела в столбец вправо. Единственная неприятность с этим макросом — убедиться, что вы не имеют ничего в столбце справа от любых ячеек, которые вы выбираете при запуске.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этом (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, которая содержит полезную информацию.

`link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера ] `.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2967) относится к Mic rosoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

link: / excelribbon-Pulling_Apart_Cells [Разделение ячеек].