O Filtrech je toho ještě možné napsat mnoho velmi zajímavého a užitečného. Minule jsme si slibovali vysvětlit, proč jsme při kopírování vyfiltrovaných vět nepoužili metodu PasteSpecial xlValues, a trápili jsme se s odstraňováním tlačítka, které se nechtěně na list Výstup filtru dostalo. K tomu však musíme hlouběji pochopit, jak vlastně Excel s vyfiltrovanými větami pracuje.
Podkladová úloha: Pracujeme již pošesté se stejnou rozsáhlejší tabulkou. Stáhněte si sešit 2011-25 Filtry.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
V předchozím díle jsme překopírovali vyfiltrované věty na samostatný list. Ale proti našemu přání se nám tam překopírovalo i tlačítko určené ke spouštění makra, takže jsme jej museli na výstupu makrem rušit.
Problém je v určité chybě v Excelu 2007, která způsobuje, že u PasteSpecial se někdy zkopírují nejen vybrané vyfiltrované řádky, ale i skryté řádky mezi nimi. Ale chyba se neprojeví vždy. Jakmile se jednou provede PasteSpecial dobře, tak už funguje bez problémů. Jenže psát makro s takovou nejistotou o výsledku, to by vyžadovalo chladnou nezodpovědnost.
Dnes se tedy seznámíme s ještě užitečnější metodou, kdy překopírujeme jen datové řádky, a ne hlavičkový řádek. Abyste lépe pochopili, co se na pozadí odehrává, vyfiltrujte si pardubické Hlaváčky - inženýry, selektujte vybrané věty a zvolte Kopírovat (Ctrl+C). Uvidíte zhruba toto:
Všimněte si „hemžící se“ dvojité čárkované hranice. Vyfiltrovaná množina buněk je organizována do kolekce zvané Areas (česky Oblasti). V našem příkladě je v každé oblasti jen jeden řádek, protože Hlaváčkové jsou po datech rozeseti řídce, což ovšem neznamená, že při jiném filtrování by v některých oblastech nemohlo být řádků více.
Při běžné práci v Excelu se k těmto oblastem fakticky nedostaneme. Excel s nimi pracuje většinou pouze v zákulisí. Avšak ve chvíli kopírování se maličko prozradí.
My si k těmto Areas řekneme pár užitečných informací. Předně se dozvíme, kolik těchto Areas náš filtr vybral, a to pomocí vlastnosti „Count“.
Spusťte s krokováním makro PruzkumAreas. Uvidíte zhruba toto:
Kdybychom nepoužili výrazu…