У Джеймса есть данные на листе, который состоит из ряда строк. Один из столбцов данных включает ячейки, в каждой из которых есть несколько строк. (Данные в ячейке были разделены на строки нажатием Alt + Enter между элементами.) Джеймс хотел бы разделить эти данные на несколько строк. Например, если в одной ячейке в строке было три строки данных, то данные в этой ячейке должны быть разделены на три строки.

Excel предоставляет удобный способ разбить данные на отдельные столбцы с помощью инструмента «Текст в столбцы». Это можно использовать для разделения данных на основе наличия символа ASCII 10, который Excel вставляет при нажатии Alt + Enter. Проблема в том, что при успешном разбиении данных на отдельные столбцы они не попадают в отдельные строки, как просил Джеймс.

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

Sub CellSplitter()

Dim Temp As Variant     Dim CText As String     Dim J As Integer     Dim K As Integer     Dim L As Integer     Dim iColumn As Integer     Dim lNumCols As Long     Dim lNumRows As Long

iColumn = 4

Set wksSource = ActiveSheet     Set wksNew = Worksheets.Add

iTargetRow = 0     With wksSource         lNumCols = Cells(1,Columns.Count).End(xlToLeft).Column         lNumRows = Cells(Rows.Count,1).End(xlUp).Row         For J = 1 To lNumRows             CText = .Cells(J, iColumn).Value             Temp = Split(CText, Chr(10))

For K = 0 To UBound(Temp)

iTargetRow = iTargetRow + 1                 For L = 1 to lNumCols                     If L <> iColumn Then                         wksNew.Cells(iTargetRow, L) _                           = .Cells(J, L)

Else                         wksNew.Cells(iTargetRow, L) _                           = Temp(K)

End If                 Next L             Next K         Next J     End With End Sub

Обратите внимание, что для запуска макроса вам нужно будет указать с помощью переменной iColumn столбец, содержащий ячейки, которые нужно разделить.

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

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

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

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

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

Этот совет (9396) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Splitting_Information_into_Rows [Разделение информации на строки].