Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Excel - zobrazení jen vybraných dat

Prosím o pomoc. Mám v Excelu 2010 tabulku o 12-ti listech (každý reprezentuje měsíc roku). V nich vždy stejné víceřádkové záhlaví, které popisuje, co bude ve kterém sloupci. V jednom sloupci mám označení subjektu, které se může vyskytovat ve více listech i v jednom opakovaně na více řádcích, na zbytku řádku jsou pak k daná data k tomuto subjektu. Potřeboval bych najednou zobrazit vždy všechny řádky pro určitý subjekt ze všech listů. Poradíte mi jak na to?

Zkoušel jsem se mrknout co mi nabídne možnost vytvořit kontingenční tabulku, ale vyhazuje mi to hlášku: že název pole kontingenční tabulky není platný. K vytvoření kontingenční tabulky mám prý použít data uspořádaná jako seznam s popisky sloupců. Měním-li název pole kontingenční tabulky, musím prý pro pole zadat nový název.

Děkuji za pomoc všem.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak tu máš to makro. Pracuje tak, že do hárka "Vyber" (ktorý si vytvoríš ako 13. hárok) vyberie zo v…
robert13 19.05.2015 14:54
robert13
Tak to teda velký dík. Jakmile bude čas, vyzkouším a pak dám vědět, zda se povedlo. Ještě jednou moc…
Lasy 19.05.2015 16:05
Lasy
Rado sa stalo. Neviem, či máš skúsenosti s makrami - procedúru, ktorú som poslal, vložíš do Excelu t…
robert13 19.05.2015 17:40
robert13
Roberte, velice Vám ještě jednou děkuji za velkou ochotu. Dnes večer makro vyzkouším, tak pak dám vě…
Lasy 20.05.2015 11:05
Lasy
A ozaj... Zabudol som podotknut, ze aby bolo makro spustitelne, musia byt makra povolene v centre do… nový
robert13 20.05.2015 16:09
robert13
... tak predsalen ešte jeden môj príspevok... k otázke riešenia tohto problému kontingenčnou tabuľko… poslední
robert13 20.05.2015 19:14
robert13

Tak tu máš to makro.
Pracuje tak, že do hárka "Vyber" (ktorý si vytvoríš ako 13. hárok) vyberie zo všetkých hárkov riadky, zodpovedajúce tomu menu, na riadku ktorého máš aktívnu bunku (t.j. nemusíš sa stavať priamo na meno, stačí, keď si v riadku, v ktorom je v prvom stĺpci meno, ktoré chceš sumarizovať. Taktiež je jedno, v ktorom hárku sa na daný riadok nastavíš, prehľadaných bude vždy všetkých 12 hárkov).
Ak máš viacriadkové záhlavie, treba nastaviť počiatočnú hodnotu premennej "RiadZahl" tak, aby obsahovala počet riadkov záhlavia.
Zošit musí obsahovať 13 hárkov, prvých 12 mesačných a posledný s názvom "Vyber". Do hárku "Vyber" sa ti naukladajú za sebou všetky riadky vyhovujúceho kritéria, zo všetkých hárkov, tak ako boli postupne nachádzané (od prvého po 12. hárok a v každom od prvého po jeho posledný záznamový riadok). Je to ošetrené aj pre prípady, keď niektoré hárky ešte neobsahujú okrem záhlavia žiadne záznamy...
Každé spustenie makra spúšťa proces nanovo, t.j. vymaže pôvodný sumár v hárku "Vyber" a vytvorí ho od začiatku.

Sub Vyber()
'nastavenie počtu riadkov záhlavia
    RiadZahl = 1
    
'kontrola, či aktívnym riadkom nie je riadok záhlavia a či aktívny riadok obsahuje údaj v stĺpci "A" s menom
    If ActiveCell.Row > RiadZahl And Range("A" & ActiveCell.Row) <> "" Then
        Meno = Range("A" & ActiveCell.Row)
        Else: MsgBox "Nesprávny riadok"
            Exit Sub
    End If
    
'výmaz predošlého výberu
    Sheets("Vyber").Cells.Delete
    
'vytvorenie záhlavia na hárku výberu
    Sheets(1).Rows("1:" & RiadZahl).Copy (Sheets("Vyber").Range("A" & 1))
    
'prieskum hárkov 1 až 12 a prenosy vybraných riadkov do hárku výberu
    For i = 1 To 12
'kontrola, či hárok obsahuje nejaké záznamy
        If Sheets(i).Range("A" & RiadZahl + 1) = "" Then GoTo DalHar
        
            For j = RiadZahl + 1 To Sheets(i).Range("A1").End(xlDown).Row
                If Sheets(i).Range("A" & j) = Meno Then
                    Sheets(i).Rows(j & ":" & j).Copy (Sheets("Vyber").Range("A" & RiadZahl + 1))
                    RiadZahl = RiadZahl + 1
                End If
            Next j
DalHar:
    Next i
End Sub

Rado sa stalo.
Neviem, či máš skúsenosti s makrami - procedúru, ktorú som poslal, vložíš do Excelu tak, že si pri otvorenom zošite s Tvojimi mesačnými hárkami otvoríš editor Visual Basicu (v karte Vývojár), vložíš doň modul a do neho nakopíruješ procedúru, ktorú som poslal (prikladám obrázok Editora VBA ako to máš mať).
Potom sa nastavíš v ľubovoľnom mesačnom hárku na ľubovoľnú bunku v riadku s tým menom, ktorého sumarizáciu chceš vytvoriť do hárka "Vyber" a spustíš makro "Vyber" (opäť cez kartu Vývojár) Karta Vývojár sa zapína v nastaveniach možností programu Excel (neviem, či "rozšírené" alebo inde, lebo doma mám Excel 2007 a Ty spomínaš 2010 a tam je to skryté zas inak :D )
Budem pár dní sledovať tento odkaz, takže ak budeš potrebovať komentár, napíš

... tak predsalen ešte jeden môj príspevok... k otázke riešenia tohto problému kontingenčnou tabuľkou...

Skúšal som nejak dostať do definovanej oblasti pre kontingenčnú tabuľku viacero listov ale nešlo to... až kým som nenašiel inštruktážny materiál, ktorý prikladám v prílohe.

Celý zádrhel bol v tom, že nástroj na definíciu viacerých oblastí v Exceli 2010 štandardne nie je prístupný a je potrebné (podobne ako kartu Vývojár) si ho pridať podľa návodu (strana 10 prílohy).

Síce si to teraz neviem odskúšať, ale som presvedčený, že týmto je to jasné a určite sa dá urobiť pekný prehľad aký potrebuješ.
Je nutné si všimnúť podmienky, t.j. že všetky listy musia mať rovnaké záhlavie (neviem, ako to bude pracovať pri viacriadkovom záhlaví ale v samotnom popise sú uvedené príklady s dvojriadkovým záhlavím) a údajne aj rovnaké popisy v prvom stĺpci každého listu (čo sa mi nechce veriť, keďže už staršie verzie kontingenčných tabuliek dokázali sumarizovať položky z viacerých listov, pričom sa položky mohli ale nemuseli vyskytnúť v rôznych hárkoch). No a tretia podmienka: zdrojové hárky nesmú obsahovať sumarizačné riadky.

Lasy, som presvedčený, že by Ti to šlo poriešiť aj takto, pohrať sa treba akurát s umiestnením polí do menoviek.

Zpět do poradny Odpovědět na původní otázku Nahoru