Транспонировать в excel

У меня есть набор данных

2011 A 560

2011 B 349

2012 A 456

2012 B 789

Вывод:

A B
2011 560 349

2012 456 789

Я хочу это в excel вручную, а также через vba. любая помощь оценивается.

2 ответа

Сначала дайте свои заголовки данных

Создайте сводную таблицу из ваших данных

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

Результат:


IFF, как выглядит ваш набор данных.

Выберите все ваши данные и вставьте сводную таблицу. Установите строки в первый столбец (тот, который имеет год). Установите столбцы во второй столбец (тот, который имеет A или B). Установите значения в качестве среднего для третьего столбца (тот, который имеет номера)

licensed under cc by-sa 3.0 with attribution.