Excel - kontrola dat

Kostlivec15.11.2012 19:02 Nahlásit
Dobrý večer =)

Mám excelovskou tabulku, ve které jsou e-mailové adresy. A mnoho z těch adres je zapsáno špatně (.ccom, &, vseznam, vcentrum, google.cz, mezera v adrese...)

Nevíte někdo (Mezek, třeba=)), jak to udělat, aby se nějak označilo, když je adresa zadána špatně?

Je mi jasné, že to nebude stoprocentní, špatně zadané adrese se nevyhneme, ale stačilo by mi, kdyby šly nějak kontrolovat ty nejčastější chyby.

Zkoušel jsem najít nějakou funkci, ale neúspěšně. A makra mi moc nejdou...

Předem děkuji velice.

Odpovědi

Přidat odpověď ▾

Diskuze

Mezek15.11.2012 19:38 Nahlásit
Pokud bys nějak obecně dokázal definovat pravidla, tak ano. Ale vidím to dost černě.
Kostlivec15.11.2012 20:07 Nahlásit
Já právě taky...

Konkrétně jde o tohle - ve sloupci B jsou adresy. Definoval bych znaky, nebo řetězec znaků, které by nějaká funkce vyhledala a pokud by ten znak (řetězec znaků) našla, vrátila by do sloupce C hodnotu NEPRAVDA.
Mezek15.11.2012 20:09 Nahlásit
To chápu. Problém je v té definici hledaného řetězce.
Kostlivec15.11.2012 20:11 Nahlásit
Nejčastější chyby jsou písmeno V místo @, čili vseznam, vemail..., čárka, mezera, &...

Ale pokud by bylo potřeba je shrnout do nějakého jednoho konkrétní slova, pak se obávám, že mám asi smůlu...
Mezek15.11.2012 20:13 Nahlásit
Jediné, co mně napadá, by byla kontrola, jestli je v adrese @.
Kostlivec15.11.2012 20:35 Nahlásit
Těch chyb je tam víc, takže prosté hledání @ až tak moc neřeší...
Kostlivec15.11.2012 21:28 Nahlásit
Mezku, prosím tě, jak by se udělala kontrola, jestli je v adresa @?
Mezek15.11.2012 22:19 Nahlásit
Dejme tomu, že adresy jsou ve sloupci E, počínaje E5 a ve sloupci G budeme indikovat nepřítomnost @ v adrese. Pak v buňce G5 bude vzorec:
=KDYŽ(JE.CHYBA(NAJÍT("@";E5;1));"Chyba!";"")
Na základě hodnoty G5 můžeme udělat podmíněné formátování - třeba červené pozadí- buňky E5.
Stačí?
Kostlivec15.11.2012 22:54 Nahlásit
Děkuji velice, Mezku. Funguje to =)

Jen by mě zajímalo, proč je v té syntaxi 1. ("@";E5;1)
Kostlivec15.11.2012 22:55 Nahlásit
Cenobito, vypadá to zajímavě a užitečně, ale vůbec tomu nerozumím =o
Cenobita.15.11.2012 23:37 Nahlásit
Regulární výrazy jsou na pochopení ... nelehké. Na netu se najde dost zdrojů. Lepší test není. Regulární výrazy mohou testovat a upravovat cokoliv ne jen e-mail-y.
Kostlivec16.11.2012 00:21 Nahlásit
Každopádně děkuji =) O víkendu na to mrknu, ale pochybuji, že to pochopím =)
Cenobita.16.11.2012 10:39 Nahlásit
Myslím, že link MS zdroje je to nejpřesnější:

msdn.microsoft.com/en-us/library/ms974570.aspx

ale chtělo by to nějaký tutoriál (rozumný - já se to učil ze stránek o PHP), a pak program na testování regulárních výrazů (na netu je hodně archivů):

"The RegEx Coach.exe"

PS: regulární výrazy se mohou hodit i do budoucna, doporučuji jim věnovat pozornost. Nic lepšího pro testování neznám, akorát se všichni shodují na tom, že jsou obtížně pochopitelné - nejsou jaksi intuitivní, což se ale asi časem může změnit. Já už se v nich čas od času trošku orientuji :)
Cenobita.16.11.2012 18:58 (Upr. 16.11.2012 18:58) Nahlásit
Nutno registrovat objekt RegExp ve VBA - visual basic pro aplikace.
Kostlivec17.11.2012 09:22 Nahlásit
To znamená co? Člověče, já se na to asi vykašlu... je to ještě horší, než jsem čekal =)
Cenobita.17.11.2012 09:31 Nahlásit
• tak to testuj jen podle podmínky KDYŽ(...) podle Mezka
• záleží zda máš zkušenost s programováním (říkal jsem že je to VBA)
Mezek17.11.2012 09:31 Nahlásit
Kontrola pomocí regulárních výrazů dělá 3 věci: Kontroluje, jestli řetězec neobsahuje nedovolené znaky, jestli obsahuje zavináč a jestli 3 až 5. znak od konce (někdy až 7) je tečka.Tohle všechno se dá udělat pomocí vzorců, když si vyhradíš jeden sloupec pro vyhodnocení všech podmínek pomocí najít. Odhadem největší problém by byly ty nedovolené znaky.
Kostlivec17.11.2012 09:51 (Upr. 17.11.2012 09:52) Nahlásit
Tak jsem vytvořil (=zkopíroval z netu) jakýsi kód. Otestoval jsem ho na několika adresách a získal jsem toto:

něco@nekde.cz
bigbob@seznam.cz
bigbadbob@seznamcz chyba
salazar-slytherin@seznam.cz
echovseznam.sk chyba
rozum@gmail.cz
ja@cokoliv.c chyba
ja@cokoliv.cz
adresa@microsoft.de
frantik@paris.fr


Poměrně uspokojivý výsledek, ale všimněte si, že u adresy rozum@gmail.cz se chyba nevypisuje. Pokud se nepletu, gmail.cz neexistuje. Asi by to šlo upravit v kódu, ale to fakt nedám =)
A u adresy něco@nekde.cz taky nevypisuje chybu, ačkoliv obsahuje znak ě, čili adresa je napsaná špatně...
Cenobita.17.11.2012 10:43 Nahlásit
• program nemůže poznat,že je rozum@gmail.cz špatně, protože by musel mít k dispozici databázi domén: DNS
• diakritika - musí se přidat podmínka aby žádný "Příliš žluťoučký kůň úpěl ďábelské ódy" nebyl v adrese mailu.
• regulární výrazy minimalizují právě ten počet dalších a dalších testů - jsou však složitější na naprogramování a chyba se i těžko odhaluje - musí se ladit
Kostlivec17.11.2012 13:03 Nahlásit
Odhalí to mezeru v mailu, chybějící @ a špatnou koncovku, to je dobré =) Vím, že žluťoučký kůň by se dal vyhnat, ale absolutně netuším jak. Budu to řešit jinak, asi funkcí KDYŽ.
Cenobita.17.11.2012 13:26 Nahlásit
V tom sešitu Excelu je možné definovat vlastní funkci ve VBA a řešit to v ní. právě proto je tam ten VBA (visual basic) implementovaný aby se jím řešily složitější uživatelské požadavky, než které standardně Excel nabízí.
Přidat komentář do diskuze ▾