将垂直信息转换为水平信息

时间:2017-04-10 15:54:25

标签: excel vba excel-vba

我想在vba中进行这种转换

enter image description here

并且为了更好地介绍我与你合影这张照片 enter image description here

现在我有另一个专栏,我应该在新表中有这个信息,但是我没有找到这样做的山楂? enter image description here

1 个答案:

答案 0 :(得分:1)

我所做的只是设置您的样本数据,然后记录一个宏并保存下面生成的录制宏。

现在注意:如果您的数据较大,那么您可能希望使用击键记录将光标放在表格的开头,然后放在表格的末尾或者"将数据定义为表格"并使用表....但这给你一般的想法。

Sub Macro1()
' Macro1 Macro

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R10C4", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Sheet1!R13C1", TableName:="PivotTable1", DefaultVersion _
        :=xlPivotTableVersion14
    Sheets("Sheet1").Select
    Cells(13, 1).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Customer ")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Group"), "Sum of Group", xlSum
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Price")
        .Orientation = xlColumnField
        .Position = 1
    End With
    Columns("C:C").ColumnWidth = 5.71
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Price").Subtotals = Array( _
        False, True, False, False, False, False, False, False, False, False, False, False)
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Group")
        .Orientation = xlColumnField
        .Position = 2
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Price"), "Sum of Price", xlSum
    Range("E14").Select
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Price").Caption = _
        "Prix"
    Range("B18").Select
    ActiveSheet.PivotTables("PivotTable1").RowGrand = False
End Sub

然后导致:

enter image description here

处理新列:Id组合原始数据中的值。但是,如果你追求的是不同的东西,我需要看一个所需输出的例子。

enter image description here