엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법

엑셀(Excel)/VBA

엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법

 

환경: Microsoft Excel 2013

 

VBA 에서 작업을 하다 보면 문자열을 다룰 때 가장 많이 접하게 되는 것이 자르기 입니다. 예를 들어 주민번호에서 생년월일을 추출한다거나 메일 주소에서 아이디를 분리하는 작업을 말합니다. 앞으로 활용 범위가 넓기 때문에 반드시 숙지하고 가시는 것이 좋습니다. 오늘은 InStr, Mid, Left 함수를 사용해서 메일 주소의 URL 과 아이디를 분리하는 방법에 대해 알아 보겠습니다.

 

먼저 메일 주소 영역을 가져옵니다. For 문을 돌면서 전체 영역에 값을 하나씩 꺼냅니다. Cells 함수의 Value 속성을 사용하면 해당 셀의 메일 주소를 가져올 수 있습니다.

 

Dim i As Range

Dim sEmail As String, sHead As String, sTail As String

   

For i = 3 To 11

    sEmail = Cells(i, 3).Value

Next i

 

이제 가져온 메일 주소를 분리해야 합니다. 아이디와 메일 주소를 구분하고 있는 “@”입니다. 그 위치가 문자열에서 몇 번째 위치에 있는지 알아 내야 합니다. 이 때 사용하는 함수가 InStr 입니다. 인수로 문자열에서 찾을 값을 두 번째 인수로 넘깁니다. “@” 가 되겠죠. 그럼 “@” 가 있는 위치를 숫자로 반환합니다.

엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법

 

“@” 의 위치를 알았으니 Left Mid 함수를 사용해서 잘라 내면 됩니다. 두 함수의 사용법은 다음과 같습니다.

 

Left(str, length) : 문자열의 왼쪽에서부터 지정한 숫자만큼 잘라 리턴한다.

l  str : 전체 문자열

l  length : 자르고 싶은 문자열 크기

 

Mid(str, start, length) : 문자열의 시작과 끝을 지정해서 잘라낸다.

l  str : 전체 문자열

l  start : 자르고 싶은 문자의 시작 위치

l  length : 자르고 싶은 문자의 종료 위치, Optional 이며 입력하지 않으면 문자열 끝까지 자른다.

 

Left 함수로는 @ 를 기준으로 앞에 있는 아이디를 분리합니다. Mid @ 기준으로 뒤에 있는 사이트 주소를 분리합니다

 

Cells(i, 4).Value = Left(sEmail, pos - 1)

Cells(i, 5).Value = Mid(sEmail, pos + 1)

 

함수를 구성하는 전체 소스는 다음과 같습니다. 함수를 실행한 결과 아이디와 메일 서버 주소가 분리 돼서 원하는 위치에 들어갔습니다.  

 

Sub dataDiv()

 

    Dim i As Integer, pos As Integer

    Dim sEmail As String, sHead As String, sTail As String

       

    For i = 3 To 11

        sEmail = Cells(i, 3).Value

        pos = InStr(sEmail, "@")

        Cells(i, 4).Value = Left(sEmail, pos - 1)

        Cells(i, 5).Value = Mid(sEmail, pos + 1)

    Next i

 

End Sub


엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법


저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군