Estoy creando una simple tabla dinámica por VBA. No sé lo que está mal con mi código. Mi código se ejecuta sin error, pero el resultado es diferente. Podría usted por favor decirme donde está el problema, en mi código.

Sub CreatePivotTable()

Dim sht As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String

'Determine the data range you want to pivot
  SrcData = ActiveSheet.Name & "!" & Range("A1:B53821").Address(ReferenceStyle:=xlR1C1)

'Create a new worksheet
  Set sht = Sheets.Add

'Where do you want Pivot Table to start?
  StartPvt = sht.Name & "!" & sht.Range("A1").Address(ReferenceStyle:=xlR1C1)

'Create Pivot Cache from Source Data
  Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)

'Create Pivot table from Pivot Cache
  Set pvt = pvtCache.CreatePivotTable(TableDestination:=StartPvt, TableName:="PivotTable1")


pvt.PivotFields("Module").Orientation = xlRowField
pvt.PivotFields("KW").Orientation = xlColumnField

pvt.AddDataField pvt.PivotFields("Module"), "Anzahl von Module", xlCount

pvt.PivotFields("Module").PivotFilters.Add Type:=xlTopCount, DataField:=pvt.PivotFields("Anzahl von Module"), Value1:=12

End Sub

Si lo hago manualmente, este es el resultado que obtengo y esto es lo que quiero en la final.

Excel crear Tabla dinámica por VBA

Mi código me da este resultado. Lo cual es incorrecto.

Excel crear Tabla dinámica por VBA

  • Si usted nos muestran los datos de la ficha nos gustaría tener más información para ayudarle a – más fácil ver de donde su VBA es en realidad tirando a partir de entonces.
InformationsquelleAutor Shan | 2015-07-30

2 Comentarios

  1. 1

    Creo que su problema está en su pequeño inicial de gama con sólo dos columnas (a, B), y las últimas líneas de código

    'Determine the data range you want to pivot
      SrcData = ActiveSheet.Name & "!" & Range("A1:B53821").Address(ReferenceStyle:=xlR1C1)

    Supongamos que usted tiene su nombre en la columna a, llamada Módulo y la columna B se KW con un número (el KW/h de su módulo)

    'Create Pivot table from Pivot Cache
    Set pvt = pvtCache.CreatePivotTable(TableDestination:=StartPvt, TableName:="PivotTableTest")
    
    pvt.AddDataField pvt.PivotFields("Module"), "Num Module", xlCount
    pvt.PivotFields("Module").Orientation = xlColumnField ' not xlRowField
    pvt.PivotFields("KW").Orientation = xlRowField ' not xlColumnField

    Usted no necesita la última línea.

  2. 0

    Trate de añadir la xlRowField y xlColumnField después de agregó el campo calculado.

    por ejemplo,

    primera

    pvt.AddDataField pvt.PivotFields("Module"), "Anzahl von Module", xlCount

    luego

    pvt.PivotFields("Module").Orientation = xlRowField
    pvt.PivotFields("KW").Orientation = xlColumnField

Dejar respuesta

Please enter your comment!
Please enter your name here