탁월한 전자 메일 검증 공식
나는 사람들이 이메일 주소를 수동으로 입력하는 칼럼을 가지고 있습니다.다음 공식을 사용하여 전자 메일 주소의 유효성을 확인합니다.
=AND(FIND(“@”,A2),FIND(“.”,A2),ISERROR(FIND(” “,A2)))
그러나 엑셀은 당신이 입력한 수식에 오류가 포함되어 있다는 오류를 발생시킵니다.저는 그 공식이 맞는 것 같습니다.여러분들이 제안할 것이 있나요?
나는 당신의 코드에 대해 같은 오류를 얻었고, 당신은 이 기호와 다른 "일반" 이중 따옴표를 가지고 있지 않은 것으로 보입니다."
.
맞춤법 사용:=AND(FIND("@",A2),FIND(".",A2),ISERROR(FIND(" ",A2)))
희망이 도움이 될 것입니다!
편집:
추가로, 사용을 고려합니다.=AND(NOT(ISERROR(FIND("@",A1))),NOT(ISERROR(FIND(".",A1))),ISERROR(FIND(" ",A1)))
그것은 경우에 오류를 방지할 것입니다.@
또는.
누락되었습니다.그래도 이것은 OK로 전달될 것입니다.aaa@.
하지만 그런 간단한 접근법도 사용될 권리가 있다고 생각합니다.)
Excel에서 이메일을 확인하는 또 다른 방법은 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
나는 그것에 대해 정확한 순서를 확인하는 수정안을 만들었습니다.@
그리고.
암묵적으로Like
VBA를 사용하지 않습니다.
=AND(NOT(ISERROR(VLOOKUP("*@*.*",A2,1,FALSE))),ISERROR(FIND(" ",A2)))
편집
"*?@?*.??*"
최상위 도메인의 길이가 적어도 2자 이상인 경우(이 게시물의 경우) 훨씬 더 설명적어도 이 게시물의 경우).
=AND(IFERROR(FIND(".",A2),FALSE),IFERROR(FIND(".",A2,FIND("@",A2)),FALSE))
승인된 답변에서 테스트되지 않은 @ 다음의 .is를 확인합니다.
Joel의 솔루션에서 영감을 얻었지만 더 짧았습니다.동일한 검사를 수행합니까?
Function IsEmailValid(strEmail)
Dim i As Integer, emailPart As Variant
IsEmailValid = IsMadeOf(LCase(strEmail), "abcdefghijklmnopqrstuvwxyz0123456789.-_@")
emailPart = Split(strEmail, ".")
i = 0
While IsEmailValid And i <= UBound(emailPart)
IsEmailValid = Len(emailPart(i)) > IIf(i = UBound(emailPart), 1, 0)
i = i + 1
Wend
If IsEmailValid Then
emailPart = Split(strEmail, "@")
IsEmailValid = UBound(emailPart) = 1 And InStr(emailPart(UBound(emailPart)), ".") > 0
End If
End Function
Function IsMadeOf(str, charList)
Dim i As Long, c As String
IsMadeOf = True
For i = 1 To Len(str)
c = Mid(str, i, 1)
If InStr(charList, c) <= 0 Then
IsMadeOf = False
Exit Function
End If
Next i
End Function
언급URL : https://stackoverflow.com/questions/14482403/excel-email-validation-formula
'programing' 카테고리의 다른 글
각도 오류: '구성 요소 'X'가 모듈에 포함되어 있지 않습니다.하위 모듈에 선언된 경우 (0) | 2023.07.09 |
---|---|
소규모 개발 팀을 위한 Git 브랜치 전략 (0) | 2023.07.09 |
Ruby Regexp 그룹 일치, 한 줄에 변수 할당 (0) | 2023.07.09 |
Firestore: 부등식/비등식 쿼리를 수행하는 방법 (0) | 2023.07.09 |
해당 속성의 이름에 해당하는 문자열이 지정된 개체 속성에 액세스(가져오기 또는 설정)하는 방법 (0) | 2023.07.09 |