Takže v stĺpcoch 6-22 a 22-6, táto časť vzorca
OR($B5="";NOT(ISERROR(MATCH($B5;{"D";"N";"očr"};0))))
testuje, či je nejaká hodnota zadaná v stĺpci B, ak je prázdne vráti TRUE, druhá časť testne či v B je niektorá z hodnôt D, N, očr. To urobí MATCH (tá 0 na konci je prepínač pre presnú hodnotu). Ak MATCH nenájde hodnotu B v poli D,N,očr, vráti chybu, preto je tam ISERROR, ktorá vráti TRUE ak je chyba. Mi ale potrebujeme zistiť, či je B hodnota z poľa, apreto to celé negujeme s NOT. Čiže získame TRUE ak B je v poli D,N,očr. Tieto 2 podmienky sú obalené v OR (alebo) a pre naše IF je to dôležité, lebo ktorákoľvek podmienka v OR je TRUE, tak OR vracia TRUE.
IF(OR($B5="";NOT(ISERROR(MATCH($B5;{"D";"N";"očr"};0))));"";
Čiže naša IF urobí čo, ak dostane výsledok podmienok v OR TRUE ? No nič, a práve o to ide. Vloží "" do stĺpcov 6-22 a 22-6, ak nieje v B nič, alebo ak je v B D,N,očr.
Ďalšia časť, zase overuje či už samotná vyhľadávacia VLOOKUP nenájde hodnotu (to je TRUE z funkcie ISERR, pretože VLOOKUP pri nenájdení vracia chybu), alebo je nájdená hodnota 0. V oboch prípadoch bude v OR, ktorá ich obaľuje, testované TRUE, a ak bude aspoň jedna podmienka TRUE, opäť vráti OR hodnotu TRUE. To je testnuté v IF, a ak je z OR TRUE, tak neurobí zasa nič, čiže vloží "".
Poznámka, tieto dve dvojice podmienok, by možno šli dať do jedného OR, neskúšal som.
OR(ISERR(VLOOKUP($B5;List3!$A$2:$G$25;4));VLOOKUP($B5;List3!$A$2:$G$25;4)=0)
A až keď máme vylúčené všemožné varianty, prečo by sme nemali nič vypisovať, tak až potom sa vloží samotná vyhľadaná hodnota cez to posledné VLOOKUP
VLOOKUP($B5;List3!$A$2:$G$25;4)
VLOOKUP funguje tak, že sa jej zadá
1 čo chceme hľadať - stĺpec B
2 kde chceme hľadať - tabuľka musí byť tomu uspôsobená, prehľadávaný stĺpec musí byť prvý, a stĺpce z ktorých budeme z validného riadku čítať údaje, musia byť zadefinované v tomto 2 parametre. Použitý je absolútny odkaz (s tými dolármi), aby sa nám neposúval v každom riadku. Naopak vyhľadávaná hodnota je čiastočne absolútna aj relatívna, stĺpec B je nežiadúce posúvať (preto $), ale riadok je nevyhnutné posúvať (preto bez $).
3 určuje z ktorého stĺpca predošlej oblasti, sa má brať údaj. Pre 6-22 tu je 4, a pre 22-6 tu je 5.
Rovnako funguje aj vzorec v Stravenky a Cestovné.
Stĺpce Dovolená, Nemoc, a očr, fungujú veľmi podobne, len sa v prvej podmienky určí že v týchto stĺpcoch sa nebude nič vypisovať ak v B nieje adekvátny "kód". Teda pre Dovolená "D", pre Nemoc "N", pre očr "očr"
PS: Ešte by som ale doporučil vo všetkých VLOOKUP vo vzorcoch pridať na koniec parameter FALSE, ktorý určuje, že bude hľadať presnú zhodu. Neviem si totiž spomenúť či je to predvolená hodnota). Tak pre istotu. Tak ako v prílohe.
Příloha: 25573_vykazyvzor3.rar (30kB, staženo 16x) citovat