Tabele przestawne są nieocenionym narzędziem przy analizie dużej liczby danych.
Układ Danych
Przy ich pomocy można tworzyć szczegółowe raporty. Warunkiem skutecznego korzystania z tabel przestawnych jest prawidłowa organizacja danych – dane muszą być uporządkowane w formie bazodanowej. W przeciwnym wypadku korzystanie z tabeli przestawnej będzie nieefektywne, lub wręcz niemożliwe.
Bufor
Część użytkowników zapewne wie, że tabele przestawne nie bazują bezpośrednio na danych zgromadzonych w tabeli. Do utworzenia tabeli przestawnej potrzebny jest tzw. bufor. To właśnie w buforze pamięci przechowywane są dane źródłowe, które Excel wykorzystuje w celu zwiększenia wydajności tabel przestawnych.
Odświeżając tabelę przestawną odświeżamy tak naprawdę bufor, na którym została ona utworzona. Jeżeli odświeżymy konkretny bufor, odświeżone zostaną wszystkie tabele utworzone na nim.
Tabele przestawne, które mają bazować na tych samych danych powinny być utworzone na tym samym buforze. Excel sugeruje takie rozwiązanie z tego względu, że pochłania ono mniej pamięci.
Często jednak tworzy się tabele przestawne na różnych buforach, zwłaszcza w sytuacji gdy chcemy porównać np. dane archiwalne z danymi aktualnymi. W takiej sytuacji konieczne jest odświeżanie tylko tabeli przestawnej zawierającej bieżące dane.
Użytkownicy Excela często piszą kod, w którym odwołują się do tabeli przestawnej, a następnie do bufora, na którym ona bazuje. W takiej sytuacji w pętli przechodzimy przez wszystkie tabele przestawne odświeżając kolejno każdą z nich.
Faktycznie za każdym razem odświeżamy jednak bufor danych – a jeżeli tabele są zbudowane na tym samym buforze… to kilkakrotnie odświeżamy ten sam bufor co jest niepożądane.
Kod Makra
Poniższy kod odświeża w pętli wszystkie bufory pamięci, a co za tym idzie wszystkie tabele przestawne (jeden raz!).
Sub OdswiezBufory()
Dim pvcBufor As PivotCache
On Error Resume Next
For Each pvcBufor In ThisWorkbook.PivotCaches
With pvcBufor
.MissingItemsLimit = xlMissingItemsNone
.Refresh
End With
Next pvcBufor
End Sub