excel电子邮件validation公式

我有一个人们手动input电子邮件地址的专栏。 我想使用这个公式validation电子邮件地址:

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

但excel出现错误,您input的公式包含错误。 对我来说公式看起来是正确的。 你们有什么build议吗?

对于你的代码,我得到了同样的错误,看起来你没有“普通”的双引号,这是不同于这个符号: "

尝试我的拼写: =AND(FIND("@",A2),FIND(".",A2),ISERROR(FIND(" ",A2))) – 希望将有所帮助!

编辑:

另外,考虑使用=AND(NOT(ISERROR(FIND("@",A1))),NOT(ISERROR(FIND(".",A1))),ISERROR(FIND(" ",A1))) – 这将防止case @或错误. 缺失。 不过,这会通过OK aaa@. ,但我想即使这样简单的方法也有权利使用)

在Excel中validation电子邮件的另一种方法是使用VBA代码:请参阅http://www.vbaexpress.com/kb/getarticle.php?kb_id=281中的代码,它的工作原理很棒,您可以修改代码根据您的需求。

 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 

有关如何使用说明,请查看http://www.vbaexpress.com/kb/getarticle.php?kb_id=281#instr

我遇到了一个firstname.lastname@domain@topdomain的问题,为此我做了一个修改,检查@@的正确顺序. 与没有VBA的隐式Like

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

编辑
"*?@?*.??*"似乎更具描述性,只要顶级域名至less有两个字符(就像这篇文章一样)。

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

这将validation。 是在接受的答案没有testing的@之后