VBA - 多个数据透视表

问题描述 投票:0回答:1

我在一家研究所工作,在这里,我们完成研究后,会生成一个数据库。从这个数据库中,我们需要进行一些交叉,例如,取出包含性别的列,并将其与电子表格中的所有其他列交叉,并且对于每个交叉,都必须创建一个新的动态表,所有这些都在同一个表中电子表格,是否可以创建一个循环来遍历表格的列并将 Y 轴固定为性别?并使用该行的已识别列作为计数器。

我编写了一个代码来创建数据透视表,但我无法包含此循环或这种遍历所有列的方式。

Sub criarTabelaDinamica()

    Dim TabRange As Range
    Dim TabCache As PivotCache 'Tipo dados para Tabela Dinâmica
    Dim TabDin As PivotTable 'Tipo para Tabela Dinâmica

    Set TabRange = Cells(1, 1).CurrentRegion 'Associar intervalo com dados à variável

    'Define a fonte de dados da Tabela Dinâmica (que ficará em cache)
    Set TabCache = ActiveWorkbook.PivotCaches _
    .Create(SourceType:=xlDatabase, SourceData:=TabRange)

    ActiveWorkbook.Sheets.Add 'Adiciona uma nova planilha, que se torna ativa
    ActiveSheet.Name = "TabelaDinamica"

    'Inserir a Tabela Dinâmica na planilha
    Set TabDin = TabCache.CreatePivotTable _
    (TableDestination:=Cells(1, 1), TableName:="TabelaDinamica1")

    'Adiciona o item aos títulos da linha
    TabDin.PivotFields("Ano").Orientation = xlRowField

    'Adiciona o item aos títulos da coluna
    TabDin.PivotFields("Região").Orientation = xlColumnField

    'Inserir dados agregados de Quantidade pela soma
    With TabDin.PivotFields("Quantidade")
        .Orientation = xlDataField
        .Function = xlSum
    End With

End Sub
excel vba pivot-table
1个回答
0
投票

Power Query 无需 VBA 代码即可完成。

  • 创建表格:选择源表格中的一个单元格,按 Ctrl+T 创建表格(ListObject)

  • 将数据加载到 PQ 中:数据>来自表/范围

  • 逆透视表:选择 PQ 中的第一列,转换 > 逆透视其他列

  • 更改列名称(可选):将
    Attribute
    更改为
    TestX

  • 创建 PVT:主页 > 关闭并加载到 > 数据透视表报告

  • 更新 PVT 布局:
    Gender
    是行字段,
    TestX
    是列字段,
    Value
    是值字段

© www.soinside.com 2019 - 2024. All rights reserved.