如何在excel 2010中进行转置

时间:2012-10-17 18:57:03

标签: excel vba

我有一张excel表格,其格式如下

a 2 3 4 0 0 0 0 0   
a 2 5 6 7 0 0 0 0  
a 4 5 9 0 0 0 0 0  
b 5 5 9 0 0 0 0 0   
b 1 1 1 1 1 1 1 1

我想最终得到像这样的东西

a 2  
a 3  
a 4  
a 2  
a 5  
a 6  
a 7  
a 4  .....  
b 1  
b 1   
b 1 ....

3 个答案:

答案 0 :(得分:1)

查看我的unpivot add-in(只需添加一个您之后可以删除的标题行)。它将以您需要的格式返回数据。

答案 1 :(得分:1)

试试这个

Sub move()

    Dim cell As Range, _
        found As Range
    Dim letter As String

    Set cell = Range("B1")
    Set found = Range("A:A").Find("*", Range("A1"), searchdirection:=xlPrevious).Offset(2, 0)

    Do While (cell.Value <> "")
        letter = cell.Offset(0, -1).Value
        Do While (cell.Value <> 0)
            found.Value = letter
            found.Offset(0, 1).Value = cell.Value
            Set cell = cell.Offset(0, 1)
            Set found = found.Offset(1, 0)
        Loop
        Set cell = Cells(cell.Row + 1, 2)
    Loop

End Sub

答案 2 :(得分:1)

我能够通过连接和去连接以及来自http://www.cpearson.com/excel/TableToColumn.aspx

的公式快速完成此操作
=$A1&","&B1

Ex1

=OFFSET($K$1:$R$5,TRUNC((ROW()-ROW($U$1))/COLUMNS($K$1:$R$5),0),MOD(ROW()-ROW($U$1),COLUMNS($K$1:$R$5)),1,1)

Ex2

=LEFT(U1,FIND(",",U1,1)-1)

Ex3

=RIGHT(U1,FIND(",",U1,1)-1)

Ex4

祝你好运。