Kontingenční tabulku v Excelu je možné refreshovat (znovu načítat data, pokud se změnila) dvěma způsoby:

  • Ručně (pravé tlačítko na tabulku a Obnovit)
  • Makrem spuštěným při nějaké události – např. aktivaci listu s touto tabulkou, viz tento návod

Tento návod popisuje, jak nastavit kontingenční tabulku tak, aby se sama aktualizovala když přijdeme na list, na kterém tato tabulka je (nebo na kterém je více kontingenčních tabulek).

Pokud často měníme data a sledujeme dopad na výsledky kontingenční tabulky, může být takovéto nastavení dost zajímavé – nemusíme znovu a znovu aktualizovat.

Je třeba udělat dva kroky v editoru Visual Basicu.

Nejprve jdeme na editor kódu listu a vložíme tento kód:

'Toto makro se spustí tak, že je aktivován list
Private Sub Worksheet_Activate()
    'Spuštění makra
    obnovit
'Ukončení makra
End Sub

v-listu Pak jdeme do modulu (pokud žádný zatím nemáme, tak si ho vytvoříme) a vložíme tento kód, který pomocí cyklu projde všechny tabulky a zaktualizuje je. 

'Název makra
Sub obnovit()
'Deklarace proměnné "kontingencni_tabulka" jako kontingencni tabulky
Dim kontingencni_tabulka As PivotTable
'Začátek cyklu - ten projde všechny kontingenční tabulky v aktivním listu a provede s nimi určitou akci
For Each kontingencni_tabulka In ActiveSheet.PivotTables
    'Tabulka je obnovena (resp. všechny tabulky, pokud je jich více...
    kontingencni_tabulka.RefreshTable
'Další krok
Next kontingencni_tabulka
'Konec makra
End Sub

v-modulu

Protože soubor obsahuje makra, je nutné ho uložit např. ve formátu xlsm nebo xlsb – ne xlsx.

2 Komentářů

  1. Superrrrrr, jen by mne ještě zajímalo, jak pověsit provedení makra automaticky do buňky (resp. změní li se hodnota buňky, nechť se automaticky makro vykoná).

Komentáře není možné přidávat