
Porovnavaci script v Exceli
Napriek tomu, ze som expert na kopec veci v IT, z office balika mam len (pod)priemerne vedomosti.
Mam od zakaznika zoznam databaz, on mi to poslal podla rokov rozdelene do tabulky, cize to mam v 2 stlpcoch.
Tych db je cca asi 100.
Ja mam vyexportovany zoznam db priamo s MSSQL a otazka znie...viem si nejako rozumne v Exceli porovnat moj zoznam s jeho? Pripadne, zeby sa db v prislusnom stlpci ak si najde dvojicku v inom stlpci oznacila zelenym polom.
Viem, ze to urcite pojde, ale co sa tyka skriptovania v Exceli som naozaj amater...pripadne stacila by funkcia if then (to som skusal neviem to spravit)?
Tak aby som to objasnil pridavam printscreen.
![[92731-poradna-jpg]](https://pc.poradna.net/files/92731-poradna-jpg)
Po ecko je ta abulka od klienta, K stlpec som si tam ja nakopiroval ako vystup z SQL.
Momentalne porovnavam data z tabulky klienta s tymi mojimi, pretoze naopak mi to nefunguje.
No, takže:
vzorec je v podstate v poriadku. Z výsledkov vyplýva:
Bunka G4 hovorí, že údaj z bunky D4 nie je nájdený.
Bunka G14 (a ostatné prázdne) dáva NEDOSTUPNÝ kvôli tomu, že prázdna hodnota sa nevyhľadáva (chyba vo VLOOKUP spôsobí, že nebude vyhodnotená funkcia IF, lebo vnorená funkcia dáva ERROR)
To, čo som písal, že prázdna bunka nevadí, platí pre prípad, že prázdna hodnota je v prehľadávanom poli.
Takže pre opačný prípad, že dáš hľadať napr K5 v poli D4 až D42, prázdne bunky v stĺpci D vadiť nebudú.
Čiže ak ošetríš prípad, že ak bunka v stĺpci D bude prázdna, tak nechaj prázdne (alebo vypíš "prázdne"), tak to bude ok
No ale aby sme to nekomplikovali, v prílohe zasielam príklad (s použitím Tebou použitých stĺpcov). Áno, najideálnejšie je poskytnúť ukážku, ako si spravil, aj keď natvrdo... Mohol si vymazať prvý stĺpec a dať sem "živú" tabuľku, ale nevadí.
V pripojenom súbore máš vzorec aj pre verziu s funkciou VLOOKUP, vrátane podmieneného formátovania, ktoré sa postará o to, že riadok s výsledkom "Chyba" podfarbí
a je tam aj verzia s funkciou COUNTIF. Schválne som tam dal také prípady, aby si si všimol, ako COUNTIF pracuje. Podľa toho by bolo potrebné naň urobiť "nadstavbu", podobne ako si urobil nad VLOOKUP (funkciou IF).
COUNTIF ti totiž udáva počet výskytov v prehľadávanom poli. Takže žiadané výsledky COUNTIF by boli 0 a 1. COUNTIF prázdnu bunku nevyhodnotí ako chybu. Všimni si však, že napriek tomu, že vľavo máš dva výskyty písmena "a" je výsledkom "1", pretože v cieľovom stĺpci sa písmeno "a" nachádza len raz.
Samozrejme, správne by malo byť, že či už v ľavom stĺpci alebo v cieli by sa mal každý prípad vyskytnúť maximálne raz...
Niesom v tomto az tak zbehly, sice mi makra fungovali, ale ked by to niekto videl . . .
a tak sa pytam, co tak index a match ?
zatial som pouzival aj ja vlookup . . . mozno by sme sa viac poducili . . . D.
Nevylučujem ďalšie možnosti, ale osobne nepoužívam funkcie INDEX a MATCH... Možno na moju škodu, ale nebol som nútený ich skúmať, keďže som sa vždy dopracoval k výsledku bez nich. Či už vzorcami alebo makrami. Momentálne neviem preskúmať, lebo som už zas mimo pc. Ale veď daj vzorec, kľudne to môže byť najlepšie riešenie...
Ved praveze ani ja, ja som myslel ci tu nieje niekto kto to pouziva, bolo by mozno vidiet vyhody nevyhody index vs vlookup . . .
SVYHLEDAT (VLOOKUP) - data musí být od prohledávané oblasti napravo. U fce INDEX na pozici dat vůči prohledávané oblasti nezáleží.
Dneska sem měl více času, tak se v souboru co jsem sem přikládal více štoural a přišel sem na chybu v kódu (záměna znamének +/-)
. Což způsobovalo dvě chybějící hodnoty ve výsledcích!
V příloze je opravený soubor + přidán další modul s kódem pracujícím se slovníkem (Dictionary). Pro jeho spuštění je potřeba reference na knihovnu "Microsoft Scripting Runtime" !!!
Inspirace čerpána z kanálu Excel Macro Mastery
PS: Flegu nebo někdo z adminů odstraňte ten chybný soubor. Díky.