2014-09-12 25 views
-3

我有一个数据集移调在Excel

2011 A 560 

2011 B 349 

2012 A 456 

2012 B 789 

输出:

 A B 
2011 560 349 

2012 456 789 

我手动,也希望在Excel通过VBA。任何帮助赞赏。

+0

谷歌搜索'转置在Excel中'将产生许多有用的结果。如果您想在VBA中执行此操作,请记录一个宏并查看它生成的代码。尽管我怀疑你不想转置,但看起来更像是一个数据透视表操作。 – Flynn1179 2014-09-12 12:37:55

+0

我无法以这种方式转置它。当我应用粘贴特殊的时候,它将整个桌子转换成与我的预期相反的行。 – user1693842 2014-09-12 12:39:25

+0

我该怎么做手动?没有vba? – user1693842 2014-09-12 12:41:13

回答

0

IFF这就是你的数据集的样子。

选择所有数据并插入数据透视表。 将您的行设置为第一列(具有年份的列) 将您的列设置为第二列(具有A或B的列) 将您的值设置为第三列的平均值数字)

0

首先给你的数据包头

data with headers

创建数据透视表数据之外的信息

Sub PivotData() 
    Dim PivotSource As Range 
    Dim PivotName As String 
    Dim PivotDest As Range 


    PivotName = "PivotTable1" 
    Set PivotSource = Sheets("Sheet1").UsedRange 
    Set PivotDest = Sheets("Sheet2").Range("A1") 

    'Select the sheet containing data 
    Sheets(PivotSource.Parent.Name).Select 

    'Create a pivot cache out of the data 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
             SourceData:=PivotSource, _ 
             Version:=xlPivotTableVersion14).CreatePivotTable _ 
             TableDestination:=PivotDest, _ 
             TableName:=PivotName, _ 
             DefaultVersion:=xlPivotTableVersion14 

    'Select the destination Sheet 
    Sheets(PivotDest.Parent.Name).Select 

    'Create the pivot table 
    With ActiveSheet.PivotTables(PivotName) 
     .PivotFields("Year").Orientation = xlRowField 
     .PivotFields("Year").Position = 1 
     .AddDataField .PivotFields("Value"), "Sum of Value", xlSum 
     .PivotFields("Type").Orientation = xlColumnField 
     .PivotFields("Type").Position = 1 
     .RowGrand = False 
     .ColumnGrand = False 
    End With 

    'Convert the pivot table to a range 
    Cells.Copy 
    Cells.PasteSpecial Paste:=xlPasteValues, _ 
         Operation:=xlNone, _ 
         SkipBlanks:=False, _ 
         Transpose:=False 

    'Remove the pivot table header 
    Rows(1).Delete 
    Range("A1").ClearContents 

    ActiveSheet.UsedRange.Columns.AutoFit 
    Range("A1").Select 
End Sub 

结果:

Pivoted Data