2013-06-10 5 views
0

Я записал сводную таблицу макросы, и я пытаюсь обобщить исходные данные вместо того, чтобы идти от имени листа «ОТЧЕТЫ»Excel VBA - Обобщить Pivot Источник данных/Range

Она захватывает все данные из активного листа, несмотря на какое имя листа.

Таким образом, я могу использовать макрос для создания сводной таблицы для любого активного листа: -

Sheets("**REPORTS**").Select 
Range("A1").Select 
Sheets.Add.Name = "Pivot" 
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    Sheets("**REPORTS**").Range("A1").CurrentRegion, Version:=xlPivotTableVersion15).CreatePivotTable _ 
    TableDestination:="Pivot!R3C1", TableName:="PivotTable1", DefaultVersion _ 
    :=xlPivotTableVersion15 
Sheets("Pivot").Select 
Cells(3, 1).Select 
With ActiveSheet.PivotTables("PivotTable1") 
    .InGridDropZones = True 
    .RowAxisLayout xlTabularRow 
End With 

ответ

1
Sub TT() 

    Dim shtSrc As Worksheet, shtDest As Worksheet 
    Dim pc As PivotCache 

    Set shtSrc = ActiveSheet 

    Set shtDest = shtSrc.Parent.Sheets.Add() 
    shtDest.Name = shtSrc.Name & "-Pivot" 

    Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
     SourceData:=shtSrc.Range("A1").CurrentRegion) 
    pc.CreatePivotTable TableDestination:=shtDest.Range("A3"), _ 
     TableName:="PivotTable1" 

    With shtDest.PivotTables("PivotTable1") 
     .InGridDropZones = True 
     .RowAxisLayout xlTabularRow 
    End With 

End Sub 
+0

спасибо, оба могут работать. и это здорово! – GimGanDi

0

Это не добавит каких-либо данных в сводной таблице, но она будет создавать его

Sub Example() 
    Dim PrevSheet As Worksheet 
    Set PrevSheet = ActiveSheet 
    Range("A1").Select 
    Sheets.Add.Name = "Pivot" 
    PrevSheet.Select 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
             SourceData:=ActiveSheet.UsedRange, _ 
             Version:=xlPivotTableVersion15).CreatePivotTable _ 
             TableDestination:="Pivot!R3C1", _ 
             TableName:="PivotTable1", _ 
             DefaultVersion:=xlPivotTableVersion15 
    Sheets("Pivot").Select 
    Cells(3, 1).Select 
    With ActiveSheet.PivotTables("PivotTable1") 
     .InGridDropZones = True 
     .RowAxisLayout xlTabularRow 
    End With 
End Sub 
Смежные вопросы