Разделение ячеек (Microsoft Excel)
Вероятно, это уже случалось с вами раньше: вы получаете данные для своего рабочего листа, и один из столбцов включает имена. Единственная проблема в том, что все имена сгруппированы вместе. Например, ячейка содержит «Аллен Вятт»,
но вы бы предпочли, чтобы имя было в одном столбце, а фамилия — в соседнем столбце справа. Как разделить имена?
Вы можете легко использовать функцию «Текст в столбцы» в Excel, чтобы разделить данные. Просто выполните следующие действия:
-
Выберите диапазон ячеек, который вы хотите разделить.
-
Выберите «Текст в столбцы» в меню «Данные». Excel запускает мастер преобразования текста в столбцы. (См. Рис. 1.)
-
Выберите, будет ли выбранный текст фиксированной шириной или с разделителями.
(В случае пробела между именем и фамилией текст будет разделен.)
-
Щелкните Далее.
-
Укажите разделители, которые должен распознавать Excel. В случае разделения имен необходимо убедиться, что вы используете пробелы в качестве разделителей.
-
Щелкните Готово.
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 [Разделение ячеек]
.