excel 2007 kontrola emailové adresy

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Zamčeno
marino
nováček
Příspěvky: 11
Registrován: 20 kvě 2010 10:29

excel 2007 kontrola emailové adresy

Příspěvek od marino »

Zdravím, můžete mi poradit funkci na kontrolu emailové adresy? Ve sloupci mám cca 25000 adres, některé buňky obsahují 2 adresy, v jiných chybí např. tečka před doménou nebo je v nich mezera, diakritika apod. Lze to řešit nějakým jednoduchým vzorcem?

Díky!
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: 29 srp 2008 16:49

Re: excel 2007 kontrola emailové adresy

Příspěvek od navstevnik »

Moc te nepotesim, jednoduchy vzorec na to neexistuje. Je nutno se zahloubat do oblasti regularnich vyrazu. Nejake uvodni info je zde: http://excelplus.net/news.php?readmore=7. Do teto oblasti jsem jen nahledl, takze odpoved nebude hned (moznaze nekdo se tim uz zabyval a proptne odpovi).
Priloz jako pomoc sesit obsahujici par desitek fiktivnich emailovych adres vcetne problemovych.
marino
nováček
Příspěvky: 11
Registrován: 20 kvě 2010 10:29

Re: excel 2007 kontrola emailové adresy

Příspěvek od marino »

určitě to projedu, pokud ne, budu se muset spokojit s tím, že to vyplivne emilový klient jako nedoručitelné.
Díky za rychlou odpověď. :satisfied:
Přílohy
email_test.xlsx
(8.26 KiB) Staženo 83 x
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: 29 srp 2008 16:49

Re: excel 2007 kontrola emailové adresy

Příspěvek od navstevnik »

Pro zacatek lze pouzit pro castecne vyhledani i Automaticky filtr - vlastni a podminky.
Napr.:

Kód: Vybrat vše

 obsahuje   @*@           nebo     neobsahuje   @

 obsahuje (vloz mezeru)   nebo     obsahuje     ,

apod
Uživatelský avatar
melior
Level 3.5
Level 3.5
Příspěvky: 977
Registrován: 20 zář 2007 15:04
Bydliště: Brno
Kontaktovat uživatele:

Re: excel 2007 kontrola emailové adresy

Příspěvek od melior »

Regularni vyrazy v klasickych VBA (tedy v makrech) nejdou (nebo aspon ne jednoduse), da se to ale obejit pomoci VBScript objektu. Ten take podporuje regularni vyrazy.
http://msdn.microsoft.com/en-us/library/ms974570.aspx
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

V excelu muzes v Makru pouzit objekt VB Script napr. pomoci Late Bindingu:
http://msdn.microsoft.com/en-us/library ... 10%29.aspx

makro by pak vypadalo nejak takto.

Kód: Vybrat vše

''vytvori objekt, ktery je zdedeny z VBScriptu - regularni vyraz 
Set objReg=CreateObject("vbscript.regexp")
'' nastaveni vzoru pro emailovou adresu. vyznam jednotlivych vyrazu najdes na odkazech vyse
objReg.Pattern="[a-zA-Z0-9]+@[a-zA-Z0-9]+"


kontrolu pak provadis pomoci metody Test:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

takze napr bys mel emailovou adresu v bunce A1

Kód: Vybrat vše

Dim emailaddr As String
Dim hResult As Boolean
emailaddr = A1.Text()

hResult = objReg.Test(emailaddr)


Pokud se objReg.Pattern (tedy regularnim vyrazem popsany "spravny tvar emailu") shoduje s textem v bunce A1, vysledkem *hResult je TRUE. Jestlize je obsah bunky jiny (tedy v tomto pripade emailova adresa obsahuje mezery, nebo jine nepovolene znaky, nebo chybi zavinace apod, pak je FALSE.
if (count(legs)==6) bug
else feature;

Dvě monarchie v nejednotné Evropě...
Dvě koloniální říše v neklidném světě 23. století...
Jaderné mocnosti s historií osmi vzájemných válek...
Federativna kraljevina Jugoslavija a Císařství České
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: 29 srp 2008 16:49

Re: excel 2007 kontrola emailové adresy

Příspěvek od navstevnik »

Navazuji na odpoved od melior:
vyhledavaci vzor podle http://www.zezula.net/cz/prog/regularni_vyrazy.html pokryva 99% vyskytu adres:

Kód: Vybrat vše

^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$


Procedura pro kontrolu (v edotru VBA vloz do modulu1, uprav adresu kontrolovaneho bloku adres):

Kód: Vybrat vše

Option Explicit

Sub TestEMailAddr()
  Dim TBlk As Range, TCll As Range
  Dim RegEx As Object
  Set RegEx = CreateObject("VBScript.RegExp")
  RegEx.Pattern = "^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$"
  Set TBlk = Worksheets("list1").Range("a2:a10")
  For Each TCll In TBlk.Cells
    If RegEx.Test(TCll.Value) = False Then TCll.Offset(0, 1).Value = "chyba"
  Next TCll
  Set RegEx = Nothing
  Set TBlk = Nothing
  Set TCll = Nothing
End Sub
marino
nováček
Příspěvky: 11
Registrován: 20 kvě 2010 10:29

Re: excel 2007 kontrola emailové adresy

Příspěvek od marino »

Všem moc děkuju! asi to budu muset předat ajtáků, protže VBA je pro mě španělsko... :)
Díky!
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • MAC Adresy
    od draxxx » » v Administrace sítě
    4 Odpovědi
    21996 Zobrazení
    Poslední příspěvek od draxxx
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14504 Zobrazení
    Poslední příspěvek od Snekment
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7425 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    6013 Zobrazení
    Poslední příspěvek od atari
  • Excel 2016 - vzorec kombinace podmínek
    od MK_Vs » » v Kancelářské balíky
    5 Odpovědi
    6226 Zobrazení
    Poslední příspěvek od lubo.

Zpět na „Kancelářské balíky“