2014-06-26 255 views
0

一張圖片勝過千言萬語。讓我們在一個表我下面的表格有說:如何在Excel中將長表格轉換爲寬表格表格?

enter image description here

利用這些信息,我希望通過編程產生這樣在另一片(排序未融化的長桌成寬形式的)表:

enter image description here

你怎麼能做到這一點?

+0

@ A.S.H我不認爲這是一個壞的問題。我問這個問題是因爲我不是一個擅長的專家。我可以一秒鐘在R中完成這項工作,但很好奇它是否可以像我在使用Excel電子表格一樣有效地在「excel」中完成。 – Alby

+0

當我評論我沒有注意到這是一個非常舊的帖子時,因爲新的答案而復活。 –

回答

2

使用VBA:

Range("G1:K99").Clear 
For Each xx In Range("A:A") 
    If xx.Value = "" Then Exit Sub 
    Range("G1").Offset(xx.Value, 0) = xx.Value 
    For e = 1 To 99 
     If Range("G1").Offset(xx.Value, e) = "" Then 
      Range("G1").Offset(xx.Value, e) = xx.Offset(0, 1).Value 
      Exit For 
     End If 
    Next 
Next 

它是從列 「G」 創建的表。如果你想另一片:

Sheets(2).Range("G1: ... 

添加表之前...

沒有VBA,方案如下:

enter image description here

添加公式:

M2 -> =IFERROR(MATCH(L2;$A$1:$A$8;);"") 
N2 -> =IFERROR(MATCH(L2;INDIRECT("$A" & (M2+1) & ":$A$8");)+M2;"") 
O2 -> =IFERROR(MATCH(L2;INDIRECT("$A" & (N2+1) & ":$A$8");)+N2;"") 
P2 -> =IFERROR(INDEX($B$1:$B$8;M2);"")   Autocomplete also columns to R 

和自動完成...

1

我可以看到另一種方法。添加兩列「計數」和「密鑰」。

Example

添加公式和擴大:

C2 -> =COUNTIF($B$2:B2;B2) 
D2 -> =B2&"|"&C2 
G2 -> =IFERROR(INDEX($A:$A;MATCH($F2&"|"&COLUMN(A1);$D:$D;0));"")