Ještě jsem našel chybu v makru , takže nahrávám aktuální verzi !!
dobrý den,
může být?
já si znovu dovolil do toho fušovat.
přidal jsem tlačítko pro přidávání nového řádku, list "Souhrn" (zeleně označená buňka)
musí být povoleny makra aby to fungovalo.
jinak pro nový rok stačí v listu "Souhrn" v buňce "B2" změnit rok, který potřebujete. (modře zvýrazněné) Ale to tam přidával Lugr, já jenom odpovídám na dotaz
Dovolil jsem si tabulku upravit.
A ano šlo by to udělat. viz odkaz
Lugrovi se tedy omluvám
jak vypadá ten vzorec?
čím jsou oddelené sjlova? mezerníkem? tabulatorem?
eLCHa napsal/a:
mno, on už to napsal přede mnou lubo ;))
a když se trošku zasoustředím - tak ten váš kód ještě trochu zredukuji ;))
Sub PChartsRefresh()
Sheets("KT-G").PivotTables(1).PivotCache.Refresh
End Sub
v podstatě bych ho vymazal úplně - pokud to není součást jiného většího projektu ;))
eLCHa napsal/a:
Co myslíte změnou?
Změnou dat - mně to funguje
Změna oblasti - musíte pořešit nebo nejlépe převeďte na tabulku (Vložení - Tabulka) a starat se o to nemusíte
@eLCHa:
po odstranění .PivotCaches.Create... se teď neaktulizuje tabulka, pokud udělám zmenu v source datech.
Vypinání KT jsem udělal jenom narychlo, aby mi to nehazelo do chyby, ale to nemá vliv na aktualizaci. Alespoň si to myslím.
@Lubo: Verze 2010
@eLCHa:
Makro jsem přepsal, refresh jsem z cyklu vyndal, sešit znovu vytvořil viz příloha. Ale vše beze změn
Pruřez pred aktualizací vypínam
mepexg napsal/a:
for each ...
ActiveSheet.pt.PivotCache.Refresh
next
Tohle nakopíruj do Listu4 "CELKOVÝ SEZNAM OVOCE I ZELENINY"
kde při každém přepnutí se makro spustí.
Private Sub Worksheet_Activate()
Dim Prdk As Long, Krdk As Long
With List4 'Jmeno cílového listu "CELKOVÝ SEZNAM OVOCE I ZELENINY"
Prdk = 4 ' počátční řádek v cilovém listu
Krdk = .Cells(Cells.Rows.Count, 2).End(xlUp).Row ' Poslední řádek v cilovém listu
.Range(.Cells(Prdk, 2), .Cells(Krdk, 3)).Delete 'Odstraní seznam v cílovem listu
List1.Range(List1.Cells(2, 1), _
List1.Cells(List1.Cells(Cells.Rows.Count, 2).End(xlUp).Row, 2)).Copy .Cells(Prdk, 2) 'Kopirování seznamu z první tabulky
Prdk = .Cells(Cells.Rows.Count, 2).End(xlUp).Row + 1
List2.Range(List2.Cells(2, 1), _
List2.Cells(List2.Cells(Cells.Rows.Count, 2).End(xlUp).Row, 2)).Copy .Cells(Prdk, 2) 'Kopirování seznamu z druhé tabulky
End With
End Sub
Ahoj,
nikoho nenapadá jak aktualizovat makrem zdroj dat v kontingenční tabulkách, tak aby se v průřezech neztrácely tabulky?
Omlouvám se,
Průřez před aktualizaci a Průřez po aktualizaci viz příloha.
Ahoj
už delší dobu se snažím vyřešit problém s aktualizací kontingenčních tabulek pomocí VBA.
Problém spočívá v tom, že po aktualizaci makrem, (viz níže) se v průřezu ztratí výběr jedné z tabulek.
Průřez před aktualizací:
Makro:
Dim oblt As Range
Dim pt As PivotTable
Dim oblast As String
Set oblt = Data.Range("A1").CurrentRegion
oblast = Data.Name & "!" & oblt.Address(ReferenceStyle:=xlR1C1)
For Each pt In Sheets("Tables").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=oblast)
pt.RefreshTable
Next pt
Set oblt = Nothing
Průřez po aktualizaci:
Ale až když aktualizuji manuálně (Nástroje kontingenční tabulky => Možnosti => Změnit zdroj dat = > Změnit zdroj dat…) obě tabulky, tak se v průřezu ukážou zase obě tabulky.
Za každou radu budu vděčný.
Děkuji
MS
Ahoj, pokud jsem to správně pochopil, tak stačí přidat příkaz mezi řádky. Viz níže.
If IsError(Application.Match(sh.Name, _
Array(DestSh.Name, "Information"), 0)) Then
sh.Cells.AutoFilter 5, "Slovo"
'Find the last row with data on the DestSh and sh
Last = LastRow(DestSh)
shLast = LastRow(sh)
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.