@vovka.h:
Dlhé ?
Toto sú všetky vzorce, ktoré som použil, teda bunky aj Definované oblasti aj PF:
SK
=IFERROR(OFFSET(Vyber;MATCH($G$1;Vyber;0)-1;-1;1;);"")
=CHOOSE(IF(Hárok1!$F$1="Zoznam B";1;2);ZoznamB;ZoznamD)
=Hárok1!$B$2:$B$4
=Hárok1!$D$2:$D$4
=ISERROR(MATCH($G$1;Vyber;0))
CZ
=CHYBHODN(POSUN(Vyber;POZVYHLEDAT($G$1;Vyber;0)-1;-1;1;);"")
=ZVOLIT(KDYŽ(Hárok1!$F$1="Zoznam B";1;2);ZoznamB;ZoznamD)
=Hárok1!$B$2:$B$4
=Hárok1!$D$2:$D$4
=JE.CHYBHODN(POZVYHLEDAT($G$1;Vyber;0))
Pozrite iba to moje riešenie v F1 a G1. Mne to nepripadá dlhé, robím často (zbytočne) oveľa dlhšie...
V F2 a G2 je len na porovnanie aplikované riešenie od kolegu "buger".
@buger:
Toto sa dá riešiť jedine makrom, lebo Overenie nemá takú funkciu, aby odstránilo hodnotu, ktorá v bunke je. To PF som Vám tak pridal presne preto, ak by ste nechceli/nemohli použiť makro, tak aby Vám do očí udrelo, že hodnotu treba zmeniť.
To Vaše makro môže byť. Volá sa ale 2x. Lebo ClearContents vyvolá ďalšie spustenie OnChange. Buď to obalíte do
Application.EnableEvents = false
...
Application.EnableEvents = true
alebo to necháte tak. Neviem čo bude rýchlejšie.
Ďalej ak by mohol nastať prípad, že sa zmení bunka s hlavným zoznamom spoločne s inými bunkami naraz (mazanie, kopírovanie,...) tak to treba ošetriť v OnChange nie porovnaním priamej adresy, ale cez Intersect...
Proste záleží na tom, ako sa to bude používať. Použitím makra v OnChange, prichádzate o Undo.
citovat