validacion - fórmula de validación de correo electrónico de excel
validar email en celda excel (4)
Tengo una columna donde las personas ingresan la dirección de correo electrónico manualmente. Quiero validar la dirección de correo electrónico utilizando esta fórmula:
=AND(FIND(“@”,A2),FIND(“.”,A2),ISERROR(FIND(” “,A2)))
pero a Excel se le ocurre que la fórmula que escribió contiene un error. Para mí la fórmula se ve bien. ¿Tienen alguna sugerencia?
Me topé con un problema de firstname.lastname@domain@topdomain
para el cual hice una enmienda que verifica el orden correcto de @
y .
Con un Like
implícito sin VBA.
=AND(NOT(ISERROR(VLOOKUP("*@*.*",A2,1,FALSE))),ISERROR(FIND(" ",A2)))
EDITAR
"*?@?*.??*"
parece ser aún más descriptivo, siempre y cuando los dominios de nivel superior tengan al menos dos caracteres (a partir de esta publicación son).
Otra forma de validar los correos electrónicos en Excel es mediante el uso del código VBA: vea el código siguiente tomado de http://www.vbaexpress.com/kb/getarticle.php?kb_id=281 , funciona muy bien tal como está, y puede modificar el código en función en sus necesidades
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
Para obtener instrucciones sobre cómo consultar http://www.vbaexpress.com/kb/getarticle.php?kb_id=281#instr
Recibí el mismo error para su código, y parece que NO tiene "comillas dobles", esto es diferente de este símbolo: "
.
Prueba mi ortografía: =AND(FIND("@",A2),FIND(".",A2),ISERROR(FIND(" ",A2)))
- ¡Espero que te ayude!
EDITAR:
Además, considere usar =AND(NOT(ISERROR(FIND("@",A1))),NOT(ISERROR(FIND(".",A1))),ISERROR(FIND(" ",A1)))
- Eso evitará errores en caso @
o .
están perdidos. Aún así, esto pasará como OK aaa@.
, pero supongo que incluso un enfoque tan directo tiene derechos para ser utilizado)
=AND(IFERROR(FIND(".",A2),FALSE),IFERROR(FIND(".",A2,FIND("@",A2)),FALSE))
Esto validará el. es después de la @ que no se prueba en la respuesta aceptada