-3
我有一个数据集移调在Excel
2011 A 560
2011 B 349
2012 A 456
2012 B 789
输出:
A B
2011 560 349
2012 456 789
我手动,也希望在Excel通过VBA。任何帮助赞赏。
我有一个数据集移调在Excel
2011 A 560
2011 B 349
2012 A 456
2012 B 789
输出:
A B
2011 560 349
2012 456 789
我手动,也希望在Excel通过VBA。任何帮助赞赏。
IFF这就是你的数据集的样子。
选择所有数据并插入数据透视表。 将您的行设置为第一列(具有年份的列) 将您的列设置为第二列(具有A或B的列) 将您的值设置为第三列的平均值数字)
首先给你的数据包头
创建数据透视表数据之外的信息
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
结果:
谷歌搜索'转置在Excel中'将产生许多有用的结果。如果您想在VBA中执行此操作,请记录一个宏并查看它生成的代码。尽管我怀疑你不想转置,但看起来更像是一个数据透视表操作。 – Flynn1179 2014-09-12 12:37:55
我无法以这种方式转置它。当我应用粘贴特殊的时候,它将整个桌子转换成与我的预期相反的行。 – user1693842 2014-09-12 12:39:25
我该怎么做手动?没有vba? – user1693842 2014-09-12 12:41:13