跳至主要内容

通过分隔符将文本字符串拆分为多行 - 3个快速技巧

Author: Xiaoyang Last Modified: 2025-05-07

通常,您可以使用“文本到列”功能通过特定的分隔符(如逗号、点、分号、斜杠等)将单元格内容拆分为多列。但是,有时您可能需要将带分隔符的单元格内容拆分为多行,并重复其他列中的数据,如下截图所示。在Excel中处理此任务时,您有什么好方法吗?本教程将介绍一些有效的方法来完成这项工作。

split text into multiple rows

视频:通过分隔符将文本字符串拆分为多行

 


方法A:通过VBA代码将带分隔符的文本拆分为多行

在本节中,我将介绍两个VBA代码,以帮助拆分由特定分隔符分隔的单元格内容。

由逗号、空格、分号等分隔的文本

要拆分由某些常见分隔符(如逗号、空格、分号、斜杠等)分隔的文本字符串,以下代码可以帮到您。请按照以下步骤操作:

 注意:此代码不支持撤销,您最好在应用此代码之前备份数据。

步骤1:打开VBA模块编辑器并复制代码

1. 激活您要使用的表格。然后按“Alt” + “F11”键打开“Microsoft Visual Basic for Applications”窗口。

2. 在打开的窗口中,点击“插入” > “模块”以创建一个新的空白模块。

3. 然后,将以下代码复制并粘贴到空白模块中。

VBA代码:通过特定分隔符(逗号、点、空格等)拆分文本

Sub SplitTextIntoRows()
'UpdatebyExtendoffice
    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("Select a range:", "Kutools for Excel", , , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    xSplitChar = Application.InputBox("Type delimiter:", "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. 粘贴代码后,请按“F5”键运行此代码。然后会弹出一个提示框,提醒您选择包含要拆分的带分隔符文本的单元格,见截图:

vba code to select the cells contain the delimited text

2. 然后,点击“确定”,另一个提示框弹出,提醒您输入要基于其拆分数据的分隔符。在这里,我输入了一个逗号和一个空格(, ),见截图:

vba code to typ a separator split the data based on

3. 最后,点击“确定”按钮。现在,您将看到所选文本字符串已根据逗号拆分为多行,其他相关列的数据也已重复,如下截图所示:

the selected text strings are split into rows

由换行符分隔的文本拆分

如果您的单元格内容由换行符分隔,要将其拆分为多行,这里还有另一个VBA代码可以帮助您。

 注意:此代码不支持撤销,您最好在应用此代码之前备份数据。

步骤1:打开VBA模块编辑器并复制代码

1. 按“Alt” + “F11”键打开“Microsoft Visual Basic for Applications”窗口。

2. 在打开的窗口中,点击“插入” > “模块”以创建一个新的空白模块。

3. 然后,将以下代码复制并粘贴到空白模块中。

VBA代码:通过换行符拆分文本

Sub SplitTextIntoRows()
'UpdatebyExtendoffice
    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("Select a range:", "Kutools for Excel", , , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    xSplitChar = Chr(10)
    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. 粘贴代码后,请按“F5”键运行此代码。在弹出的框中,请选择要拆分的单元格,见截图:

vba code to selec the range to split

2. 然后,点击“确定”按钮,所选单元格中的数据被拆分为多行,如下截图所示:

the data in the selected cells are split into rows

方法B:通过Kutools for Excel在10秒内将带分隔符的文本拆分为多行

如果您已经安装了“Kutools for Excel”,使用其“拆分数据到多行”功能,您可以根据指定的任何分隔符将文本字符串拆分为多行。请按照以下步骤操作:

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

步骤1:选择“拆分数据到多行”功能

点击“Kutools” > “合并与拆分” > “拆分数据到多行”,见截图:

Click Kutools > Merge & Split > Split Data to Rows

步骤2:指定要拆分的数据单元格和分隔符

在弹出的对话框中,使用以下选项:

  • 1). 从“区域(单列)”文本框中选择要拆分的单元格列表;
  • 2). 然后,选择分隔您的数据的分隔符,这里,我将选择“其他”并在文本框中输入逗号和空格(, );
  • 3). 最后,点击“确定”按钮。
Specify the data cells and delimiter for splitting in the dialog box

现在,选定的带有分隔符文本字符串的单元格已根据特定分隔符转换为多行,见截图:

the selected cells are converted into multiple rows

 提示:如果您想恢复原始数据,只需按Ctrl + Z进行撤销即可。

容易使用吗?对这个功能感兴趣的话,请点击下载以获取30天免费试用版


方法C:通过Power Query将带分隔符的文本拆分为多行

如果您正在运行Office 365或Excel 2016及更高版本,“Power Query”是一个强大的工具,可以帮助您将带分隔符的文本拆分为多行或多列。当您希望在原始数据发生变化时刷新拆分的数据时,它非常有用。请按照以下步骤完成操作:

步骤1:将数据表导入Power Query

1. 选择要使用的数据范围,然后点击“数据” > “从表格”,见截图:

 提示:在Excel 2019和Office 365中,点击数据 > 从表格/范围。

click Data > From Table

2. 在弹出的“创建表格”对话框中,点击“确定”按钮以创建表格,见截图:

click OK button to create a table

3. 现在,“Power Query 编辑器”窗口显示了数据,见截图:

the Power Query Editor window is displayed with the data

步骤2:在Power Query中进行转换

1. 选择要拆分的列。然后,点击“主页” > “拆分列” > “按分隔符”,见截图:

click Home > Split Column > By Delimiter

2. 在“按分隔符拆分列”对话框中:

要通过逗号、空格、分号等拆分文本字符串,请执行以下操作:

  • 1). 从“选择或输入分隔符”下拉列表中选择您的数据分隔符;
  • 2). 从“拆分位置”部分选择“每次出现分隔符”;
  • 3). 然后,点击“高级选项”以展开该部分,并在“拆分至”下选择“行”;
  • 4). 最后,点击“确定”关闭此对话框。
specify the options in the dialog box to split the text by comma, space, semicolon, etc

要通过换行符将文本字符串拆分为多行,请执行以下操作:

  • 1). 从“选择或输入分隔符”下拉列表中选择“自定义”;
  • 2). 从“插入特殊字符”下拉菜单中点击“换行符”,字符“#(lf)”将自动插入到“自定义”下的文本框中;
  • 3). 从“拆分位置”部分选择“每次出现分隔符”;
  • 4). 然后,点击“高级选项”以展开该部分,并在“拆分至”下选择“行”;
  • 5). 最后,点击“确定”关闭此对话框。
specify the options in the dialog box to split the text by line break

3. 现在,所选数据已被拆分为多行,如下截图所示:

the selected data has been split into multiple rows

步骤3:将Power Query输出到Excel表格

1. 然后,您应该将数据输出到工作表中。请点击“主页” > “关闭并加载” > “关闭并加载 / 关闭并加载至”,(这里,我将点击“关闭并加载”),见截图:

click Home > Close & Load to load the data

 提示:点击“关闭并加载”将把数据输出到新工作表;点击“关闭并加载至”选项,数据将输出到您需要的任何其他工作表。

2. 最后,数据将被加载到新工作表中,见截图:

the data is loaded to a new worksheet

 提示:如果您需要频繁更新原始表中的数据,请不要担心,您只需右键单击结果表并点击“刷新”以动态获取新结果。


相关文章:

  • 将单元格值拆分为多列
  • 在Excel中,当您想通过某些分隔符(如逗号、空格、句号、换行符等)将单元格值列表拆分为多列时,通常内置的“文本到列”功能可以帮助您逐步完成此任务。本文将为您介绍一些好的技巧,以便轻松快速地将单元格值拆分为多列或多行。
  • 将单元格拆分为多行或多列
  • 假设您有一个包含多个由特定字符(例如分号)分隔的内容的单元格,然后您希望根据分号将这个长单元格拆分为多行或多列,在这种情况下,您是否有快速的方法在Excel中解决这个问题?
  • 按大小写拆分文本字符串
  • 在Excel中,我们通常通过固定宽度或分隔符使用“文本到列”功能拆分文本,但您是否尝试过按大写和小写拆分文本?例如,您有一组数据,需要根据大小写将其拆分为两列:一列包含小写字符串,另一列包含大写字符串,如下截图所示。“文本到列”功能不支持此操作,不过,我可以介绍一种技巧,快速按大小写拆分文本字符串。
  • 将数字拆分为单独的数字
  • 假设您需要将数字分解或拆分为单独的数字,如下截图所示,您能做什么来实现它?本文将为您提供两种方法。