Predpokladám, že tých stĺpcov, ktoré môžu mať (i naraz) prázdne obsahy pri určitých filtroch, je viac a môžu sa vyskytnúť v nesúvislej oblasti na viacerých miestach tabuľky (napr pri danom filtri budú prázdne stĺpce D, H, K ...) a chceme skryť všetky prázdne stĺpce...
Riešenie: udalosť zmenu filtrácie zachytiť nejakým ľubovoľným pomocným vzorcom, ktorý bude filtráciou meniť svoju hodnotu a makro spúšťať udalosťou Worksheet_Calculate (v module príslušného hárka!). Táto udalosť nastáva vždy pri prepočítavaní hárka (pokiaľ nie je automatické prepočítavanie vypnuté)
Čiže máme podchytenú reakciu na zmenu filtra.
Následne je potrebné vytvoriť kód, ktorý najlepšie funkciou SUBTOTAL (ktorý rešpektuje skutočnosť skrývania riadkov filtrovaním) s parametrom funkcie 103 (t.j. COUNTA), ktorý spočítava počet zobrazených údajov (či už číselných alebo reťazcových) v neskrytých bunkách stĺpca. Funkciu je možné zapracovať do kódu ako Worksheetfunction (t.j vzorce SUBTOTAL jednotlivých stĺpcov nemusia byť v samotnej tabuľke). Prejdením všetkých stĺpcov v cykle sa zistia stĺpce, v ktorých je hodnota SUBTOTAL (103,...) rovná 1 (t.j. obsahuje len záhlavie) a každý takýto stĺpec sa nechá skryť.
Ako odkryť tie stĺpce, ktoré zmenou filtra menia prázdny stav na neprázdny, keďže doposiaľ sú skryté? Tak, že každou zmenou filtra sa najprv všetky stĺpce odkryjú aby sa mohla previesť kontrola SUBTOTAL-ov a následne sa skryjú len tie stĺpce, pri ktorých nastala zmena filtrovaním na stav bez hodnoty.
Všetky skrývania a odkrývania prebehnú utajene (t.j. bez preblikávania obrazovky) tak, že sa na začiatku dočasne vypne aktualizácia obrazovky príkazom Application.Screenupdating=False