将多列组合成一个列

使用Excel,如何使用多列创build单个列?

例如:我可能需要删除2012-2014年的列,并创build一年的列。 同时,我需要在2012-2014年保留这些信息,并为这些信息创build一个列,以便与每行(姓名,国家,年级,年份,数据)alignment:

Name Country Grade 2012 2013 2014 Smith France A 0.333194233 0.64347979 0.72795544 Adams Germany D 0.307532421 0.580823282 0.851274645 Franklin Americas C 4.597219783 7.983514354 10.79688839 Roosevelt Americas B 0.615064841 1.089043653 1.502249374 Washington Australia A 0.261792462 0.456573955 0.620206846 

所以应该看起来像这样:

 Name Country Grade Year Data Smith France A 2012 0.333194233 Smith France A 2013 0.64347979 Smith France A 2014 0.72795544 etc. 

假设Name在A1中,插入一个新的ColumnD并在D1中复制下来以适应:

 =A1&"#"&B1&C1 

然后untivot(细节与图像在这里selectD1:Gn( n适合))。

在第8步之后,在表中插入三个新的列(成为B:D)并在B2中:

  =LEFT(A2,FIND("#",A2)-1) 

在C2中:

 =MID(A2,FIND("#",A2)+1,LEN(A2)-LEN(B2)-2) 

在D2中:

 =RIGHT(A2) 

收拾起来。

您是否在“Paste Special”中尝试了TRANSPOSE? 还是你想dynamic?

链接

find解决scheme: 链接它的工作原理!

创build这个模块并运行macros:

 Public Sub tranpose() Dim i As Long, _ LR1 As Long, _ LR2 As Long, _ LC As Long Application.ScreenUpdating = False Columns(1).Insert Shift:=xlToRight LR2 = Range("B" & Rows.Count).End(xlUp).row Range("A1:A" & LR2).Value = Chr(65) LC = Cells(1, Columns.Count).End(xlToLeft).Column For i = 3 To LC LR1 = Range("A" & Rows.Count).End(xlUp).row + 1 LR2 = Cells(Rows.Count, i).End(xlUp).row Range(Cells(1, i), Cells(LR2, i)).Cut Destination:=Cells(LR1, 2) Range(Cells(LR1, 1), Cells(LR1 + LR2 - 1, 1)).Value = Chr(63 + i) Next i Application.ScreenUpdating = True End Sub