• 2
  • 0
  • 1

Witam.

Potrzebuję stworzyć Makro, które tworzy tabelę przestawną.

Nie wiedząc jak to zrobić, skorzystałem z rejestratora Makr. Niestety, nawet po zarejestrowaniu makra i uruchomieniu go, program ciągle wyrzuca błąd.

Dodam, że usunąłem opcję "option explicit" (przy debugprint jest informacja, że nie ma zdefiniowanej żadnej zmiennej).

Czy istnieje jakaś opcja na szybsze/sensowniejsze wstawienie tabeli przestawnej? 

Pozdrawiam.
Adrian.

 

Załączniki

  • png

    bladPivot.PNG ( 37K )
  • txt

    TabelaPrzestawna.txt ( 3K )
Adrian_Widera
  • Zapytał
  • @ Adrian_Widera | 16.05.2018
    • 0
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedzi (2)

  • 0

Ja zrobiłem to następująco:

Set xlWB = ThisWorkbook
Set xlSH = Worksheets("Arkusz z danymi do tabeli przestawnej")
xlSH.Range("a1").Select 'u mnie tu zaczyna się tabela, z której biorę dane
Worksheets(1).PivotTableWizard

Set xlWB = Nothing
Set xlSH = Nothing

i działa jak należy. :)

Tomasz_Kasprzycki
  • Odpowiedział
  • @ Tomasz_Kasprzycki | 16.05.2018
    • 2
    • 4
    • 8
  • 1

Ja proponuję kod, który zrobi od razu trochę więcej. :)

Sub tworz_tabele()
Dim źródło As Range, gdzie As Range, tabela As String

'zakres danych źródłowych
Set źródło = ActiveSheet.UsedRange
'miejsce docelowe dla tabeli
Set gdzie = [G1]
'nazwa tabeli
tabela = "tabela_przest"

'tworzymy samą tabelę
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        źródło, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:=gdzie, TableName:=tabela, DefaultVersion:=xlPivotTableVersion14

'i wrzucamy do niej dane
With ActiveSheet.PivotTables(tabela)
   'wskazujemy kolumnę z nagłówkiem "wiersze" jako źródło etykiet wierszy
   .PivotFields("wiersze").Orientation = xlRowField
   'wskazujemy kolumnę z nagłówkiem "kolumny" jako źródło etykiet kolumn
   .PivotFields("kolumny").Orientation = xlColumnField
   'wskazujemy kolumnę z nagłówkiem "dane" jako element do sumowania
   .AddDataField .PivotFields("dane"), "Suma z dane", xlSum
End With

End Sub

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 16.05.2018
    • 1
    • 7
    • 1