将信息拆分为行(Microsoft Excel)
James在工作表中有一些数据,这些数据包含在一系列行中。数据中的列之一包括每个单元具有多行的单元。 (通过在项目之间按Alt + Enter将单元格中的数据分成几行。)James希望将此数据分为多行。例如,如果该行中的单个单元格中有三行数据,则该单元格中的数据应分为三行。
Excel提供了一种方便的方法,可以使用“文本到列”工具将数据拆分为单独的列。这可用于根据ASCII 10字符的存在来分割数据,这是Excel在您按Alt + Enter时插入的内容。问题在于,尽管这成功地将数据拆分为单独的列,却没有像James所要求的那样将其拆分为单独的行。
这意味着该问题的解决方案必须包括使用宏。以下代码显示了一种方法。在本示例中,宏假定您要“扩展”工作表中的所有内容,并且工作表中的数据从第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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9396)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本:
链接:/ excel-Splitting_Information_into_Rows [将信息拆分为行]。