본문 바로가기
업무 자동화

엑셀 이메일 주소 추출하기, 복잡한 데이터에서 메일 주소만 골라내는 방법

by jungdabnote 2026. 2. 16.
반응형

업무를 하다 보면 고객 명단이나 회의록 같은 텍스트 데이터 안에서 이메일 주소만 따로 뽑아내야 할 때가 있습니다. 수백 명의 데이터가 섞여 있는데 이걸 하나하나 복사해서 붙여넣고 계셨나요?

오늘은 텍스트가 아무리 복잡하게 섞여 있어도 @ 기호를 기준으로 이메일 주소 형식만 정확하게 찾아내어 리스트로 만들어주는 자동화 매크로를 소개합니다.

1. 이메일 추출 자동화가 필요한 이유

이메일 주소는 오타가 하나만 나도 메일 발송이 실패하기 때문에 정확성이 생명입니다. 사람이 눈으로 찾다 보면 실수로 빠뜨리거나 잘못 긁어오는 경우가 생기죠. 매크로를 이용하면 정해진 규칙에 따라 데이터만 추출하므로 작업 속도는 물론 정확도까지 완벽하게 챙길 수 있습니다.

2. 이메일 주소 일괄 추출 VBA 코드

이 코드는 선택한 범위 내의 셀들을 검색하여 이메일 형식인 것만 찾아 바로 옆 열에 정리해 줍니다.

Alt + F11을 눌러 모듈을 추가하고 아래 코드를 복사해서 넣어보세요.

Sub ExtractEmails()
    Dim RegEx As Object
    Dim Matches As Object
    Dim Match As Object
    Dim rng As Range
    Dim cell As Range
    Dim i As Integer
    
    ' 정규식(Regular Expression) 객체를 생성합니다.
    Set RegEx = CreateObject("VBScript.RegExp")
    With RegEx
        .Pattern = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
        .Global = True
        .IgnoreCase = True
    End With
    
    ' 사용자가 선택한 범위를 대상으로 합니다.
    Set rng = Selection
    i = 0
    
    Application.ScreenUpdating = False
    
    For Each cell In rng
        If RegEx.Test(cell.Value) Then
            Set Matches = RegEx.Execute(cell.Value)
            For Each Match In Matches
                ' 원본 셀의 오른쪽 한 칸 옆에 추출된 이메일을 기록합니다.
                cell.Offset(i, 1).Value = Match.Value
                ' 한 셀에 여러 이메일이 있을 경우를 대비해 행을 넘깁니다.
                ' (필요에 따라 로직을 수정할 수 있습니다.)
            Next Match
        End If
    Next cell
    
    Application.ScreenUpdating = True
    MsgBox "이메일 추출이 완료되었습니다.", vbInformation, "작업 완료"
End Sub

3. 실무 활용 팁

위 코드에서 사용된 '정규식(RegExp)'은 특정한 패턴을 가진 문자열을 찾는 아주 강력한 도구입니다. 이메일뿐만 아니라 전화번호, 사업자 등록번호 등 일정한 형식이 있는 데이터라면 패턴만 바꿔서 얼마든지 응용이 가능합니다.

추출된 이메일 리스트를 지난번에 알려드린 '중복 데이터 제거' 기능과 함께 사용하면, 중복 없는 깔끔한 메일 발송 리스트를 순식간에 완성할 수 있습니다.

4. 마치며

단순하고 지루한 반복 작업에서 벗어나는 것이 스마트 워킹의 시작입니다. 오늘 공유해 드린 이메일 추출 매크로로 여러분의 소중한 시간을 아껴보세요. 월요일 아침, 가뿐하게 업무를 시작하시길 바랍니다!

반응형