將資料拆分為列

將資料拆分為列

我有一個正在處理的電子表格。此表中有兩列。 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, "最後,"&B1&","&B2),B2)

3)運行它

4)複製並貼上C列作為值(假設在D列中)以擺脫公式

5)依D列排序,刪除所有沒有說「最後」的內容

6)選擇D列,資料標籤>文字到列>分隔>選擇逗號>確定

現在,所有內容都被分解為唯一的列,並且與 ID 位於同一行。您可以刪除 B 和 C 列,因為不再需要它們

相關內容