Kopírovanie do filtrovaných buniek

Kopírovanie do filtrovaných buniek
4.8 / 5 (95%) 4 hlasov

Kopírovanie na hárku, kde je aktívny filter je častá operácia v Exceli. Ak kopírovanie robíme na tej časti hárku, kde sa filrované bunky nenachádzajú, nerobí to žiaden problém. Kopírovanie funguje obvyklým spôsobom. Pokiaľ ale budeme robiť kopírovanie vo filtrovanej tabuľke, tak musíme uvažovať o dvoch možnostiach:

  1. Kopírovanie vyfiltrovanej tabuľky do inej časti hárku alebo na iný hárok
  2. Kopírovanie buniek do filtrovanej tabuľky

 

Kopírovanie vyfiltrovanej tabuľky do inej časti hárku alebo na iný hárok

Ak potrebujeme prekopírovať vyfiltrovanú tabuľku, tak to nerobí žiaden problém. Použijeme filter a riadky ktoré ostanú (tie, ktoré vyhovujú kritériám filtrovania) vyberieme a kopírujeme na iné miesto. To môže byť na tom istom hárku alebo aj na inam. Samozrejme, nič nám nebráni prekopírovať vyfiltrovanú databázu aj do iného zošita (to je tiež iný hárok, že). Väčšinou kopírujeme aj s názvami stĺpcov, ale ak ich nepotrebujete, nie je to povinné. Pri kopírovaní tabuľky s filtrom sa režim filtrovania nekopíruje. Teda sa nemusíme báť, že sa nám názvy stĺpcov budú kopírovať aj s tlačidlami pre nastavenie podmienok filtrovania.

Jediná vec, ktorú si musíme uvedomiť je tá, že nesmieme kopírovať do takej oblasti buniek, kde je aktívny filter. Spoznáme to veľmi jednoducho, ak je v tabuľke filter, na ľavej strane sú čísla riadkov modrou farbou. To platí aj vtedy, keď podmienke filtrovania vyhovujú všetky riadky aj keď len niektoré.

 

Kopírovanie buniek do filtrovanej tabuľky

Ak potrebujeme kopírovať do filtra, môže to byť problém. Najlepšie, ak to vyskúšame na príklade.

V nasledovnej tabuľke máme zamestnancov a mesto.

tabuľka s príkladom

Vyfiltrujeme si zamestnancov z Bratislavy. Vyfiltrovaná tabuľka, do ktorej budeme kopírovať vyzerá nasledovne:

vyfiltrovaná tabuľka

Do tejto vyfiltrovanej tabuľky ideme kopírovať dvomi spôsobmi. Najskôr budeme kopírovať jednu bunku. V našom prípade chceme každému z Bratislavy nakopírovať odmenu 10€. Do ľubovoľnej prázdnej bunky pod tabuľkou, napíklad D12, zadáme hodnotu 10€, vyberieme, CTRL+C, označíme bunky kde chceme prilepiť, v našom prípade D2 až D9, CTRL+V. Ukončíme kopírovanie klávesou ESC. Po vymazaní kritérií filtrovania bude tabuľka vyzerať nasledovne:

kopírovanie do filtra

Vidíme, že sa nepodarilo spraviť to, čo sme potrebovali. Hodnota sa nakopírovala do všetkých vybraných buniek, teda od D2 až po D9, bez ohľadu na to, či sú bunky viditeľné alebo nie.

Teraz to skúsime trošku inak. Nebudeme kopírovať jednu bunku do viacerých, ale počet kopírovaných buniek bude rovnako veľký ako rozsah buniek do ktorých budeme kopírovať. Jednoducho: budeme kopírovať päť buniek do piatich.

Opäť vyfiltrujeme len zamestnancov z Bratislavy. Ostane nám 5 riadkov, ktoré vyhovujú podmienke filtrovania. Rovnako, ako bola tabuľka na druhom obrázku. Do prázdnych buniek pod tabuľku, napríklad E12 až E16 si pripravíme názvy dní od pondelka do piatku. Tieto budeme kopírovať do stĺpca E – Služba. Pri prilepovaní vyberieme iba začiatočnú bunku – E2 a dokončíme CTRL+v a ukončíme klávesou ESC. Ak by sme vybrali rozsah buniek – E2 až E9, excel by nám v dialógovom okne oznámil „Nemôžeme vykonať prilepenie, pretože oblasť Kopírovať a oblasť prilepenia nemajú rovnakú veľkosť“ a kopírovanie by nemohlo pokračovať.

dialógové okno

Keď dokončíme kopírovanie tak, že vyberieme len bunku E2, bude výsledok nasledovný:

iné kopírovanie do filtra

Je na prvý pohľad jasné, že ani týmto spôsobom sa nepodarilo nakopírovať do buniek, ktoré vyhovujú filtrovaniu. Keď vymažeme kritériá filtrovania, tak zistíme, že sme nakopírovali do 5 buniek od E2 bez ohľadu na to, či boli alebo neboli viditeľné. Kopírovali sme aj do tých buniek, ktoré boli v skrytých riadkoch. Tabuľka po vymazaní kritérií bude nasledovná:

Po kopírovaní do filtra

 

Vytvorenie makra na kopírovanie do filtrovaných buniek

Kopírovanie do filtrovaných buniek by sa dalo spraviť, ale len po jednej bunke. Čo by pri 3 riadkovej tabuľke až taký veľký problém nebol, ale pri 300 už áno a pri 300 000 ani neuvažujeme. Preto si takýto postup ideme zautomatizovať pomocou makra.

Makro na kopírovanie do filtrovaných buniek by malo byť dostupné z ľubovoľného excelovského zošita, nielen z toho, ktorý práve používame alebo je otvorený. Preto musíme umiestniť makro do zošita, ktorý sa nazýva Personal.xlsb. Aby som neodbočoval od témy a nerozvíjal možnosti, ako tento zošit zobraziť, kedy sa vytvorí automaticky a pod., spravíme postup, ktorý nebude možno najrýchlejší, ale bude určite pre každého funkčný.

1. V stavovom riadku klikneme na tlačidlo Záznam makra. (alebo ak máme zobrazenú kartu Vývojár, dáme príkaz Zaznamenať makro)

Záznam makra

 

Zobrazí sa dialógové okno Záznam makra. Tam vyplníme názov, v našom prípade KopirovanieDoFiltra a Makro uložiť do nastavíme na Zošit osobných makier.

 

Okno záznam makra

Potvrdíme OK.

 

2. V stavovom riadku klikneme na Zastaviť záznam.

Zastaviť záznam makra

 

3. Zobrazíme editor jazyka VBA. To spravíme tak, že stlačíme ALT+F11. V ľavej časti vo VBAProject (PERSONAL.XLSB) nájdeme v Modules položku Module1 a dvojklikom otvoríme. V pravej časti budeme vidieť pripravené makro, ktoré upravíme tak, že to celá vymažeme a nakopírujeme nasledovný kód:


Sub KopirovanieDoFiltra()
Set CoChcemKopirovat = Selection
Set KdeChcemKopirovat = Application.InputBox("Vyberte rozsah buniek, do ktorých chcete nakopírovať", Type:=8)
For Each Cell In CoChcemKopirovat
Cell.Copy
For Each thing In KdeChcemKopirovat
If thing.EntireRow.RowHeight > 0 Then
thing.PasteSpecial
Set KdeChcemKopirovat = thing.Offset(1).Resize(KdeChcemKopirovat.Rows.Count)
Exit For
End If
Next
Next
End Sub

Bude to vyzerať nasledovne:

Makro na kopírovanie do filra

 

Takže makro, ktoré bude kopírovať do filtrovaných buniek máme vytvorené, editor jazyka VBA môžeme zavrieť.

 

Použitie makra na kopírovanie do filtrovaných buniek.

Makro stačí vytvoriť len raz a používať ho môžeme ľubovoľný počet krát.

Čo je veľmi dôležité: Počet kopírovaných buniek sa musí rovnať počtu vyfiltrovaných buniek, do ktorých chceme nakopírovať.

V našom príklade teda budeme musieť kopírovať nie jednu bunku s 10€ do piatich buniek, ale 5 buniek s 10€ do piatich.

Poďme na to! Pripravíme si pod vyfiltrovanou tabuľkou 5 buniek s hodnotou 10€. Napríklad do buniek D12 až D16. Vyberieme tieto bunky, dáme CTRL+C. A teraz ideme spustiť makro, napríklad stlačíme ALT+F8. Budeme vidieť nasledovné okno:

Spustenie makra

Vyberieme názov makra PERSONAL.XLSB!KopirovanieDoFiltra a potvrdíme tlačidlom Spustiť.

V ďalšom okne zadáme rozsah buniek, do ktorých chceme nakopírovať, v našom prípade D2 až D9 a potvrdíme OK.

vstup

Ukončíme kopírovanie klávesou ESC.

To isté zopakujeme aj s bunkami E12 až E16, kde si opätovne pripravíme dni od pondelka do piatku a pomocou makra nakopírujeme do filtrovaných buniek E2 až E9. Tentoraz bude výsledok kopírovania v poriadku, hodnoty sa nakopírovali len do buniek, ktoré vyhovujú výsledkom filtrovania. Keď zrušíme kritériá filtrovania, tabuľka z nášho príkladu bude vyzerať ako na nasledovnom obrázku.

kopírovanie do filra

.

Komentáre
Kopírovanie do filtrovaných buniek
4.8 / 5 (95%) 4 hlasov