将数据拆分为列

将数据拆分为列

我正在处理一个电子表格。此表格中有两列。A 列是唯一标识符,B 列有 ID 号。一个标识符最多可以有 1 或 5 个 ID。我需要做的是将所有 ID 移动到一行,保留标识符,我已附上前后图像。

我确信有一些公式可以做到这一点,希望你能帮助到你。

前

后

答案1

将此宏放在标准模块中并运行它:

Sub Macro1()
    Dim i As Long, j As Long, k As Long, Na As Long
    Dim v As String, Nc As Long

    Columns("A:A").Copy Columns("C:C")
    ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlYes


    Na = Cells(Rows.Count, "A").End(xlUp).Row
    Nc = Cells(Rows.Count, "C").End(xlUp).Row

    For i = 2 To Nc
        k = 4
        v = Cells(i, "C").Value
        For j = 2 To Na
            If v = Cells(j, 1).Value Then
                Cells(i, k) = Cells(j, 2).Value
                k = k + 1
            End If
        Next j
    Next i
End Sub

以下是一些示例输出:

在此处输入图片描述

如你所见,我们假设输入是列A。输出位于其旁边的列中。代码不关心数据是否已排序。

答案2

我经常这样做,但不使用 VBA,只需几个步骤:

1)首先按 ID 对数据进行排序,以便将它们分组在一起

2)然后,在 C2 中:=if(A1=A2,if(A2=A3,B1&","&B2, "Last,"&B1&","&B2),B2)

3)将其删除

4)复制并粘贴 C 列作为值(假设为 D 列),以删除公式

5)按 D 列排序,删除所有未显示“最后”的内容

6) 选择 D 列,数据选项卡 > 文本到列 > 分隔 > 选择逗号 > 确定

现在所有内容都分成了不同的列,与 ID 位于同一行。您可以删除 B 列和 C 列,因为它们不再需要

相关内容