Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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)?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak aby som to objasnil pridavam printscreen. [92731-poradna-jpg] Po ecko je ta abulka od klienta,…
fleg 06.04.2021 15:31
fleg
No, takže: vzorec je v podstate v poriadku. Z výsledkov vyplýva: Bunka G4 hovorí, že údaj z bunky D4…
robert13 06.04.2021 16:57
robert13
No ale aby sme to nekomplikovali, v prílohe zasielam príklad (s použitím Tebou použitých stĺpcov). Á…
robert13 06.04.2021 17:32
robert13
Niesom v tomto az tak zbehly, sice mi makra fungovali, ale ked by to niekto videl . . .:-) a tak sa…
truhlik 06.04.2021 17:36
truhlik
Nevylučujem ďalšie možnosti, ale osobne nepoužívam funkcie INDEX a MATCH... Možno na moju škodu, ale…
robert13 06.04.2021 17:51
robert13
Ved praveze ani ja, ja som myslel ci tu nieje niekto kto to pouziva, bolo by mozno vidiet vyhody nev… nový
truhlik 07.04.2021 13:14
truhlik
SVYHLEDAT (VLOOKUP) - data musí být od prohledávané oblasti napravo. U fce INDEX na pozici dat vůči… nový
Siki83 07.04.2021 20:46
Siki83
A keďže Siki "stiahol" podklady pomocou OCR, tak predkladám moju verziu s kompletným podmieneným for… nový
robert13 07.04.2021 10:42
robert13
Ďalšia verzia, ktorá je už preddefinovaná až po rok 2025 a predĺženými zoznamami po riadok 50. Plus… nový
robert13 07.04.2021 11:40
robert13
Řešil jsem něco podobného, ale mnohem rozsáhlejšího (hodně přes 10.000 položek), porovnával jsem dos… nový
L-Core 07.04.2021 11:33
L-Core
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… poslední
Siki83 08.04.2021 19:51
Siki83

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...

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...

A keďže Siki "stiahol" podklady pomocou OCR, tak predkladám moju verziu s kompletným podmieneným formátovaním s využitím Sikiho stiahnutých dát ;-), keďže Fleg nám ten luxus neposkytol 3-[
V celom poli B4:D42 sú použité len dva vzorce pre podmienku podmieneného formátovania pre porovnanie s poľom K4:K42 (po jednom vzorci pre farbu zhody a pre farbu nezhody)
a v poli K4:K42 sú použité dva vzorce pre podmienku podmieneného formátovania pre súčasné porovnanie so všetkými tromi stĺpcami B4:D42 (taktiež pre dve informačné farby)
Toť vše...
Pokiaľ sa rozrastie počet rokov, stačí v podmienenom formátovaní rozšíriť oblasť platnosti podmienky.
Podobne, pokiaľ sa predĺžia zoznamy o riadky pod riadok 42, analogicky sa upravia rozsahy vo funkcii VLOOKUP a oblasť platnosti podmienky.
Samozrejme, možno to celé predpripraviť na ľubovoľný počet stĺpcov a ľubovoľné dĺžky zoznamov. Ja som to nadefinoval na aktuálne oblasti dát.
Môžeš si to odskúšať tak, že zmeníš niektorý údaj (či už v zdroji alebo v cieli). Odrazí sa to v oboch relevantných poliach.
Prehľad napr negatívnych výsledkov porovnania za konkrétny rok spravíš jednoducho filtrom farieb

Ďalšia verzia, ktorá je už preddefinovaná až po rok 2025 a predĺženými zoznamami po riadok 50.
Plus pridaná farebná kontrola pre označenie spoločnosti, u ktorej stačí, že nevyhovuje čo len jedna bunka v riadku (jeden vzorec pre podmienené formátovanie)
Môžeš odskúšať vyplnením buniek v rozsahu hrubo orámovaných časti, pre ktoré sú preddefinované vzorce a podmienky...

Ale či to bude to pravé orechové, neviem, keďže L-Core už napísal niečo v tom zmysle, že čosi takéhoto s úspechom riešil a priložil odkaz na nástroj
A týmto zatím končím :-D:puff:

Řešil jsem něco podobného, ale mnohem rozsáhlejšího (hodně přes 10.000 položek), porovnával jsem dosavadní a aktualizované textové stringy jedné hry (Cities Skylines) kvůli překladu. Každý string měl své ID, aktualizací některé ID ubyly, některé přibyly, některé zůstaly, ale změnil se text. Tu novou ENG verzi jsem musel porovnat s poslední přeloženou CZE. Problémem je, že ty ID jsou při každé nové aktualizaci různě zpřeházené, což naštěstí nevadí v použitelnosti. Nakonec jsem v Excelu vytvořil mohutné řešení, které si (po přípravě resourců) s aktualizací relativně snadno poradí, připraví překlopení poslední ENG do CZE a použije vše doposud přeložené, co se nezměnilo. Co se změnilo a je nové, označí. Co zmizelo, označí taky. V něm dopřekládáme každou novou aktualizaci a snadno z ní vyexportujeme data, které dalšími nástroji převedeme do formy použitelné ve hře.

A proč to píšu, vycházel jsem při tom porovnávání "dvou sloupců" z tohoto vzoru: https://appjesyka.files.wordpress.com/2017/11/porovnat.zip
Mrkni do VBA, třeba to nějak pomůže i tobě, pořádně jsem to tady nestudoval..

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.

Zpět do poradny Odpovědět na původní otázku Nahoru