如何将逗号分隔的数据分隔到新行中,同时为每个新条目保留来自另一列的相同标签?

如何将逗号分隔的数据分隔到新行中,同时为每个新条目保留来自另一列的相同标签?

我有一张很大的 Excel 表,需要用逗号分隔,格式如下这是示例 Excel 表。我需要将 column2 中的每个数据条目用逗号分隔,并将其放在工作表中的新行中,但要为每个新条目复制 column1 中的标签。因此,如果示例中的第 1 行已分隔,那么我将有 5 行显示 tag1,以及来自 column2 的 5 个独立数据。

编辑:澄清我的意思

我的表格当前格式如下:

Column 1 | Column 2
----------------------------
tag1     | data1,data2,data3
tag2     | data4,data5,data6

我试图让它像这样:

Column 1 | Column 2
-------------------
tag1     | data1
tag1     | data2
tag1     | data3
tag2     | data4
tag2     | data5
tag2     | data6

答案1

这是一个相当简单的方法,可以完全避免使用公式/VBA。您只需要访问Power Query,这是最新 Excel 的内置功能,但可下载用于 Excel-2010。


样本数据

在此处输入图片描述


脚步

  • 选择所有数据
  • 转到Data选项卡(或Power Query当它是插件时)并选择From Table。确认您的数据有标题。
  • 将打开一个新选项卡。但选择“Column2”并单击Split Column(在Start选项卡或上)Transform。选择拆分分隔符
  • 在下一个菜单中,对我来说,标准分隔符是逗号。如果需要,请更改它。然后点击Advanced并选择拆分为
  • OK

  • 此外,为了清理目的,右键单击“Column2”标题Transform>> Trim
  • 并退出Power Query,选择节省任何变化。

结果

在此处输入图片描述

答案2

您正在尝试的操作看起来可以通过使用宏(VBA 代码)来实现。

在此处输入图片描述


Sub SplitColumnToRow()

Dim objRegex As Object
Dim X
Dim Y
Dim lngRow As Long
Dim lngCnt As Long
Dim tempArr() As String
Dim strArr

Set objRegex = CreateObject("vbscript.regexp")
objRegex.Pattern = "^\s+(.+?)$"


X = Range([A3], Cells(Rows.Count, "B").End(xlUp)).Value2
ReDim Y(1 To 2, 1 To 1000)

For lngRow = 1 To UBound(X, 1)

    tempArr = Split(X(lngRow, 2), ",")
    For Each strArr In tempArr
        lngCnt = lngCnt + 1

        If lngCnt Mod 1000 = 0 Then ReDim Preserve Y(1 To 2, 1 To lngCnt + 1000)
        Y(1, lngCnt) = X(lngRow, 1)
        Y(2, lngCnt) = objRegex.Replace(strArr, "$1")
    Next
Next lngRow

[C3].Resize(lngCnt, 2).Value2 = Application.Transpose(Y)

End Sub

怎么运行的:

  • 要打开 VBA 编辑器,请按Alt+F11或者R右键单击 Sheet TAB
  • 现在打查看代码。
  • C奥皮&粘贴此代码。
  • 年代平均西工作簿作为acro 已启用。
  • 最后R联合国宏观。

注意:

  • 在此代码中Range([A3], Cells(Rows.Count, "B"),和 [C3].Resize(lngCnt, 2).Value2,单元格引用是可编辑的。

您可以根据需要调整它们。

相关内容