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的@之后