工作需要将一个Excel中大概有几百行,其中某一列中按/字符分割的很长的内容,需要将这个内容转换为行便于分析。因此这个Excel宏就非常好用了。
步骤【1】:打开 VBA 模块编辑器并复制代码
1, 激活您要使用的工作表。 然后,按 Alt + F11键 键打开 Microsoft Visual Basic应用程序 窗口。
2, 在打开的窗口中,点击 插页 > 模块 创建一个新的空白模块。
3, 然后,将以下代码复制并粘贴到空白模块中。
宏模块命名为[SplitTextIntoRows]的代码如下:
Sub SplitTextIntoRows()
Dim xSRg, xIptRg, xCrRg, xRg As Range
Dim xSplitChar As String
Dim xArr As Variant
Dim xFNum, xFFNum, xRow, xColumn, xNum As Integer
Dim xWSh As Worksheet
Set xSRg = Application.InputBox("请选择目标区域:", "Kutools for Excel", , , , , , 8)
If xSRg Is Nothing Then Exit Sub
xSplitChar = Application.InputBox("请填写分隔符号:", "Kutools for Excel", , , , , , 2)
If xSplitChar = "" Then Exit Sub
Application.ScreenUpdating = False
xRow = xSRg.Row
xColumn = xSRg.Column
Set xWSh = xSRg.Worksheet
For xFNum = xSRg.Rows.Count To 1 Step -1
Set xRg = xWSh.Cells.Item(xRow + xFNum - 1, xColumn)
xArr = Split(xRg, xSplitChar)
xIndex = UBound(xArr)
For xFFNum = LBound(xArr) To UBound(xArr)
xRg.EntireRow.Copy
xRg.Offset(1, 0).EntireRow.Insert Shift:=xlShiftDown
xRg.Worksheet.Cells(xRow + xFNum, xColumn) = xArr(xIndex)
xIndex = xIndex - 1
Next
xRg.EntireRow.Delete
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
步骤【2】:执行代码得到结果
1, 粘贴代码后,请点开这个宏模块,并执行它的代码。 然后,会弹出一个提示框,提醒您选择包含要拆分的分隔文本的单元格,请参见屏幕截图:
2, 然后,单击 OK,会弹出另一个提示框,提醒您输入拆分数据所依据的分隔符。 在这里,我输入一个逗号和一个空格 (, ),请看截图:
3, 最后,单击 OK 按钮。 现在,您将看到所选文本字符串根据逗号拆分为行,其他相关列数据重复如下图所示:
【注意要点】:
1,启用宏;
2,精简并采用双列或单列内容,这样处理速度更快
3,宏脚本在运行的过程中可能会很卡,表格会进入卡死状态,一直要耐心等待,卡死不代表没有运行,最终不卡的时候就运行完了。
教程摘抄来自于:
https://zh-cn.extendoffice.com/documents/excel/7328-excel-split-text-into-rows.html