이 글에서는 엑셀 셀에 포함된 영숫자(알파벳과 숫자)가 아닌 특수문자를 제거하는 방법을 소개합니다. 원본 데이터를 다룰 때 매우 흔히 겪는 문제로, 하나의 셀 안에 숫자와 텍스트, 그리고 각종 특수문자가 뒤섞여 있는 경우가 많습니다. 이럴 때 데이터를 깔끔하게 정리하려면 영숫자를 제외한 나머지 문자들을 걸러내야 하는데요. VBA 매크로 코드와 사용자 정의 함수(User Defined Function)를 활용하면 손쉽게 처리할 수 있습니다.
아래 두 가지 방법을 단계별로 자세히 살펴보겠습니다.
엑셀에서 영숫자가 아닌 문자를 제거하는 2가지 방법
분석할 원본 데이터를 받았는데 한 열에 숫자와 텍스트가 특수문자와 뒤섞여 있다고 상상해 보세요. 작업 효율을 높이려면 이런 불필요한 문자들을 문자열에서 제거해야 합니다. VBA 코드를 실행하거나 사용자 정의 함수를 적용하면 이 문제를 해결할 수 있습니다.
방법 1. VBA 코드 실행으로 특수문자 제거하기
VBA 매크로 코드를 사용하면 셀에 있는 영숫자가 아닌 문자들을 일괄 삭제할 수 있습니다. 아래 단계를 따라 해 보세요.
1단계: VBA 편집기 열기
- 먼저 Alt + F11 키를 눌러 Microsoft Visual Basic for Applications(VBA) 창을 엽니다.
- 새 창이 열리면 상단 메뉴에서 삽입(Insert)을 클릭하고 모듈(Module)을 선택하여 새 모듈을 만듭니다.
2단계: VBA 코드 입력 및 실행
- 새로 열린 모듈에 아래의 VBA 코드를 붙여넣습니다. 그대로 복사해서 워크시트에 사용하시면 됩니다.
Sub VBA_to_remove()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Non-alphanumeric text remove"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
xOut = ""
For i = 1 To Len(Rng.Value)
xTemp = Mid(Rng.Value, i, 1)
If xTemp Like "[a-z.]" Or xTemp Like "[A-Z.]" Or xTemp Like "[0-9.]" Then
xStr = xTemp
Else
xStr = ""
End If
xOut = xOut & xStr
Next i
Rng.Value = xOut
Next
End Sub
- F5 키를 눌러 코드를 실행한 후, 대상 범위를 선택하고 확인(OK)을 클릭하면 작업이 완료됩니다.
- 이제 셀에서 영숫자가 아닌 문자들이 성공적으로 제거된 것을 확인할 수 있습니다.
참고: 이 코드는 영어 알파벳(a-z, A-Z)과 숫자(0-9), 마침표(.)만 남기고 나머지 문자는 모두 삭제합니다. 한글 데이터가 포함되어 있다면 패턴에 한글 범위를 추가해야 하니 주의하세요.
방법 2. 사용자 정의 함수(UFD) 적용으로 특수문자 제거하기
엑셀에는 기본적으로 영숫자가 아닌 문자를 제거하는 전용 함수가 없습니다. 하지만 직접 만들 수 있습니다! 사용자 정의 함수를 정의하면 일반 함수처럼 수식으로 활용할 수 있습니다. 이 역시 VBA 코드 작성이 필요하며, 아래 단계를 따라 진행해 보세요.
1단계: 함수 코드 작성
- Alt + F11 키를 눌러 VBA 편집기 창을 엽니다.
- 함수 이름을 RemoveNonAlphaNumeric으로 지정하고, 아래 코드를 모듈에 입력합니다.
Function RemoveNonAlphaNumeric(xStr As String) As String
Dim xStrR As String
Dim xCh As String
Dim xStrMode As String
Dim xInt As Integer
xStrMode = "[A-Z.a-z 0-9]"
xStrR = ""
For xInt = 1 To Len(xStr)
xCh = Mid(xStr, xInt, 1)
If xCh Like xStrMode Then
xStrR = xStrR & xCh
End If
Next
RemoveNonAlphaNumeric = xStrR
End Function
2단계: 함수 적용하기
- 코드 작성이 끝나면 워크시트로 돌아와 =RemoveNonAlphaNumeric을 입력해 보세요. 함수가 정상적으로 생성된 것을 확인할 수 있습니다.
- 이제 C4 셀에 아래 수식을 입력합니다.
=RemoveNonAlphaNumeric(B4)
- Enter 키를 누르면 결과가 표시됩니다.
- 사용자 정의 함수가 정상적으로 작동하는 것을 확인했다면, 채우기 핸들을 이용해 나머지 셀에도 동일하게 적용하여 최종 결과를 얻으면 됩니다.
알아두면 좋은 사항
👉 사용자 정의 수식은 일반 VBA 매크로보다 제약이 많습니다. 워크시트나 셀의 구조 및 서식을 변경할 수 없으며, 오직 값만 반환합니다.
👉 개발 도구 탭이 보이지 않는다면 다음 경로로 활성화할 수 있습니다.
파일 → 옵션 → 리본 사용자 지정 → 개발 도구 체크 → 확인
마무리
지금까지 엑셀에서 영숫자가 아닌 문자를 제거하는 두 가지 방법, 즉 VBA 매크로 실행과 사용자 정의 함수 적용 방법을 알아보았습니다. 궁금한 점이나 추가 질문이 있다면 댓글로 남겨주세요. 여러분의 피드백을 기다립니다. 즐거운 학습 되세요!