fórmula de validação do E-mail excel

Tenho uma coluna onde as pessoas introduzem o endereço de E-mail manualmente. Quero validar o endereço de E-mail com esta fórmula:

=AND(FIND(“@”,A2),FIND(“.”,A2),ISERROR(FIND(” “,A2)))

mas o excel aparece com um erro de que a fórmula que escreveu contém um erro. Para mim, a fórmula parece-me correcta. Têm alguma sugestão?

Author: Matteo, 2013-01-23

4 answers

Eu Tenho o mesmo erro para o seu código, e parece que você não tem aspas "simples", que é diferente deste símbolo: ".

- A esperança vai ajudar!

Editar:

Além disso, considere a utilização de =AND(NOT(ISERROR(FIND("@",A1))),NOT(ISERROR(FIND(".",A1))),ISERROR(FIND(" ",A1))) - que irá evitar erros no caso de @ ou . estarem em falta. Ainda assim, isto vai passar como OK aaa@., mas eu suponho que mesmo uma abordagem tão simples tem direitos a serem usados)

 17
Author: Peter L., 2013-01-23 15:44:51

Outra forma de validar e-mails no excel é usando o código VBA: veja o código abaixo retirado de http://www.vbaexpress.com/kb/getarticle.php?kb_id=281 , funciona como está, e você pode modificar o código com base em suas necessidades.

Sub email() 
Dim txtEmail As String 
txtEmail = InputBox("Type the address", "e-mail address") 

Dim Situacao As String 

 ' Check e-mail syntax
If IsEmailValid(txtEmail) Then 
    Situacao = "Valid e-mail syntax!" 
Else 
    Situacao = "Invalid e-mail syntax!" 
End If 
 ' Shows the result
MsgBox Situacao 
End Sub 
Function IsEmailValid(strEmail) 
Dim strArray As Variant 
Dim strItem As Variant 
Dim i As Long, c As String, blnIsItValid As Boolean 
blnIsItValid = True 

i = Len(strEmail) - Len(Application.Substitute(strEmail, "@", "")) 
If i <> 1 Then IsEmailValid = False: Exit Function 
ReDim strArray(1 To 2) 
strArray(1) = Left(strEmail, InStr(1, strEmail, "@", 1) - 1) 
strArray(2) = Application.Substitute(Right(strEmail, Len(strEmail) - Len(strArray(1))), "@", "") 
For Each strItem In strArray 
    If Len(strItem) <= 0 Then 
        blnIsItValid = False 
        IsEmailValid = blnIsItValid 
        Exit Function 
    End If 
    For i = 1 To Len(strItem) 
        c = LCase(Mid(strItem, i, 1)) 
        If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) Then 
            blnIsItValid = False 
            IsEmailValid = blnIsItValid 
            Exit Function 
        End If 
    Next i 
    If Left(strItem, 1) = "." Or Right(strItem, 1) = "." Then 
        blnIsItValid = False 
        IsEmailValid = blnIsItValid 
        Exit Function 
    End If 
Next strItem 
If InStr(strArray(2), ".") <= 0 Then 
    blnIsItValid = False 
    IsEmailValid = blnIsItValid 
    Exit Function 
End If 
i = Len(strArray(2)) - InStrRev(strArray(2), ".") 
If i <> 2 And i <> 3 Then 
    blnIsItValid = False 
    IsEmailValid = blnIsItValid 
    Exit Function 
End If 
If InStr(strEmail, "..") > 0 Then 
    blnIsItValid = False 
    IsEmailValid = blnIsItValid 
    Exit Function 
End If 
IsEmailValid = blnIsItValid 
End Function 

Quanto às instruções, verifique http://www.vbaexpress.com/kb/getarticle.php?kb_id=281#instr

 9
Author: Joel, 2014-09-26 16:14:28

Encontrei um número de firstname.lastname@domain@topdomain para o qual fiz uma alteração que verifica a ordem correcta do @ e do . com um implícito Like sem VBA.

=AND(NOT(ISERROR(VLOOKUP("*@*.*",A2,1,FALSE))),ISERROR(FIND(" ",A2)))

Editar
"*?@?*.??*" parece ser ainda mais descritivo, desde que Domínios de nível superior são pelo menos dois caracteres de comprimento (a partir deste post eles são).

 3
Author: user3819867, 2015-08-26 13:51:33

=AND(IFERROR(FIND(".",A2),FALSE),IFERROR(FIND(".",A2,FIND("@",A2)),FALSE))

Isto validará o . é depois do @ que não é testado na resposta aceite

 1
Author: dariogriffo, 2017-01-25 11:27:26