Excel将行转换为重复的列

时间:2019-02-19 20:24:58

标签: excel excel-formula transform

这里是新功能,感谢您的耐心等候。

我觉得这是一个简单的问题,但这已经困扰了我一段时间,我找不到一个好的解决方案。

我有这样的数据:
Raw Data

我正在尝试像这样:
Result Data

预先感谢,这个问题给我的痛苦比我想象的要多。

2 个答案:

答案 0 :(得分:0)

我可以建议2种方法:

方法1:VBA

这是一些非常简单的VBA代码,可以满足您的要求。

只需要确定数据从何处开始,然后将其发布到相邻的工作表中即可。

本质上有3个计数器可追踪您在任一工作表的数据集中的位置。

我敢肯定,这里有一个更精明的用户可以提供更简洁的答案,但这应该使您的心态指向正确的方向。

此代码一次遍历每一行一个值。如果您的数据集非常庞大,则可能需要很长时间。

Sub Repeat_Rows()

    Dim iRows As Integer
    Dim iColumns As Integer
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim start As Range

    Set start = Sheet1.Range("A1")
    iRows = start.End(xlDown).Row    'find out total rows of initial data
    k = 0

    For i = 1 To iRows

        iColumns = Sheet1.Range("A" & i).End(xlToRight).Column '# columns in the row

        For j = 2 To iColumns 'starts at column B

            k = k + 1 'row counter for sheet 2
            Sheet2.Range("A" & k).Value = Sheet1.Range("A" & i).Value
            Sheet2.Range("B" & k).Value = Sheet1.Cells(i, j).Value

        Next

    Next

End Sub

方法2:数据透视表

老实说,我本人对数据透视表不是很好,但这绝对是一种可行的方法。只需突出显示数据,创建数据透视表,然后处理标签位置,直到获得所需的结果即可。

答案 1 :(得分:0)

感谢virtualdvid的评论,为我指明了正确的方向。屏幕截图中的解决方案如下:

Get & Transform Data from Table/Range

Select all rows right of items to be repeated and "Unpivot only selected columns

Result Data

毕竟这是一个简单的问题,我只是使它复杂化了。谢谢!