Excel 表格中的多列转换为多行

Excel 表格中的多列转换为多行

我有一张以下格式的 Excel 表格。

ID Date1 Date2 Date3  
1  1/1   1/2   1/3
2  1/2   1/3   1/1
3  1/3   1/2   1/4

有没有办法将其改成这种格式?

ID Date
1  1/1
1  1/2
1  1/3
2  1/2
2  1/3
2  1/1
3  1/3
3  1/2
3  1/4

我愿意使用 VBA、PowerQuery、PowerPivot、数据模型等。在寻找此问题的答案时我应该使用一个技术术语吗(规范化、转换等)。

谢谢你的帮助。

答案1

使用如下数据:

在此处输入图片描述

选择一个单元格并输入:

=ROUNDUP(ROWS($1:1)/3,0)

并在相邻单元格中输入:

=OFFSET($B$2,ROUNDUP(ROWS($1:1)/3,0)-1,MOD(ROWS($1:1)-1,3))

向下复制这些单元格并将正确的格式应用于第二列以查看:

在此处输入图片描述

答案2

如果你有很多,而且你更愿意使用 VBA,那么这个就行

Option Explicit

Sub unpivot()
Dim lastrow As Integer
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Dim lastcol As Integer
lastcol = Cells(1, Columns.Count).End(xlToLeft).Column

Dim r As Integer
Dim c As Integer


For r = lastrow To 2 Step -1

    For c = lastcol To 3 Step -1
        If Cells(r, c) <> "" Then
            Rows(r + 1).Insert
            Cells(r + 1, 1) = Cells(r, 1)
            Cells(r + 1, 2) = Cells(r, c)
            Cells(r, c).Clear
        Else: Rows(r).Delete
        End If
    Next

Next

End Sub

相关内容