엑셀 문자 추출 함수 :: ExtractLetter 사용법 및 전체 코드

셀 안의 텍스트에서 '문자'만 찾아 추출하는 ExtractLetter 함수의 사용법 및 전체 명령문 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2020. 10. 12. 02:20
URL 복사
메모 남기기 : (10)

엑셀 문자 추출 함수 :: ExtractLetter 사용법 총정리

함수 구문
= ExtractLetter ( 텍스트, [시작지점], [종료지점], [특수문자제외] )
인수 설명
인수 설명
텍스트 문자만 추출할 값이 적힌 셀 또는 문자열입니다.
시작지점
[선택인수]
문자 추출을 시작할 시작위치입니다. 기본값은 '1' 입니다.
'5'를 입력할 경우, 5번째 글자부터 문자를 추출합니다.
종료지점
[선택인수]
문자 추출을 종료할 지점입니다. 기본값은 엑셀 셀안의 최대 글자수인 '32,767' 입니다.
'10'을 입력할 경우, 10번째 글자까지만 문자를 추출합니다.
특수문자제외
[선택인수]
추출할 문자열에서 특수문자 제외여부를 결정합니다. 기본값은 'FALSE' 입니다.
'TRUE'를 입력할 경우, 특수문자를 제외한 문자열이 추출됩니다.
함수 사용예제
  • = ExtractLetter ( "서초1동-스타2 장인*대회" )
    '// '서초동-스타  장인*대회'를 반환합니다.
  • = ExtractLetter ( "서초1동-스타2 장인*대회" , , , TRUE )
    '
    // '서초동스타 장인대회'를 반환합니다.
  • = ExtractLetter ( "서초1동-스타2 장인*대회" , 6 )
    '// '스타 장인*대회'를 반환합니다. 
  • = ExtractLetter ( "서초1동-스타2 장인*대회" , 6 , 10 )
    '// '스타장인'을 반환합니다.
ExtractLetter 함수 설명

ExtractLetter 는 셀의 값 또는 텍스트에서 숫자를 제외하고'문자만 찾아 추출'하는 엑셀 문자 추출 함수입니다. 시작지점과 종료지점을 지정하여 문자를 추출할 수도 있습니다. '특수문자제외'를 TRUE로 입력할 경우, 숫자와 특수문자를 모두 제외한 문자만 추출됩니다.

엑셀 문자 추출 함수 사용 예제
엑셀 문자 추출 함수인 ExtractLetter 함수 사용예제

문자열에서 숫자만 추출하려면, 숫자 추출 함수인 ExtractNumber 함수를 사용합니다.

엑셀 문자추출 결과값에서 '일부 특수문자'만 제외하고 싶을 경우, 명령문의 Pattern 값을 아래와 같이 변경합니다.

  • .Pattern = "[^\d@]"
    '// 특수문자 중 '@' 기호만 제외합니다.
  • .Pattern = "[^\d@/$~%*]"
    '// 특수문자 중 '@', '$', '~', '%', '*' 기호만 제외합니다.

이외에 Regex(정규표현식)을 응용하면, 다양한 방법으로 원하는 문자만 추출 또는 제외할 수 있습니다.

그 외 참고사항
  • 엑셀 문자 추출 시작지점의 값이 종료지점보다 클 경우, ExtractLetter 함수는 #VALUE! 오류를 반환합니다.
  • 한 셀에 입력가능한 최대 문자수는 32,767개 입니다. 따라서 32,767개 보다 많은 문자수가 입력될 경우, 엑셀은 #VALUE! 오류를 반환합니다.
  • 문자 추출 시작지점, 종료지점의 값이 숫자가 아닐 경우, 기본값으로 대체됩니다. 시작지점의 기본값은 1, 종료지점의 기본값은 32,767 입니다.
  • 엑셀 문자 추출 시작지점, 종료지점의 값으로 0보다 작은값이 입력되면, 기본값으로 대체됩니다.
  • 특수문자제외 값으로 'TRUE' 또는 'FALSE'가 아닌 값이 입력되면, 기본값인 'FALSE'로 대체됩니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [엑셀VBA함수] ExtractLetter :: 숫자 제외 문자 추출
    예제파일

숫자를 제외한 문자 추출, ExtractLetter함수의 동작원리

ExtractLetter 함수 전체 명령문
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
'■ ExtractLetter 함수
'■ 텍스트에서 문자만 추출합니다. 추출 시작 및 종료위치를 지정할 수 있습니다.
'■ 인수 설명
'_____________Val : 문자를 추출할 텍스트 또는 셀입니다.
'__________iStart : 추출을 시작할 위치입니다. 기본값은 1 입니다.
'___________iEndl : 추출을 종료할 위치입니다. 기본값은 32767 입니다.
'__ExcludeSpecial : 특수문자 포함 여부입니다. TRUE일 경우 특수문자를 포함하여 문자를 추출합니다.
'###############################################################
 
Function ExtractLetter(Val, Optional iStart, Optional iEnd, Optional ExcludeSpecial) As String
 
Dim i As Long
Dim Str As String
Dim match As Variant
 
If IsMissing(iEnd) Then iEnd = 32767
If IsMissing(iStart) Then iStart = 0
If IsMissing(ExcludeSpecial) Then ExcludeSpecial = False
 
If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1 
If Not IsNumeric(ExcludeSpecial) Then ExcludeSpecial = False Else ExcludeSpecial = cBool(xcludeSpecial) 
If iStart > iEnd Then ExtractLetter = CVErr(errvalue)
If IsObject(Val) Then Str = Val.Value Else Str = Val
 
Str = Mid(Str, iStart, iEnd - iStart + 1)
 
With CreateObject("VBScript.RegExp")
 
    If ExcludeSpecial = False Then
        .Pattern = "\D"
    Else
        .Pattern = "[^\d!@#$%\^&*()-_+=~`';:""?<>,.]"
    End If
 
    .Global = True
    Set match = .Execute(Str)
 
        If match.Count > 0 Then
            ExtractLetter = ""
            For i = 0 To match.Count - 1
               ExtractLetter = ExtractLetter & match(i)
            Next i
        End If
End With
 
End Function
명령문 동작원리 단계별 알아보기
  1. 예상되는 오류를 방지하기 위한 오류처리 명령문을 추가합니다.
    If IsMissing(iEnd) Then iEnd = 32767
    If IsMissing(iStart) Then iStart = 0
    If IsMissing(ExcludeSpecial) Then ExcludeSpecial = False
     
    If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
    If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1 
    If Not IsNumeric(ExcludeSpecial) Then ExcludeSpecial = False Else ExcludeSpecial = cBool(ExcludeSpecial) 
    If iStart > iEnd Then ExtractLetter = CVErr(errvalue)
    If IsObject(Val) Then Str = Val.Value Else Str = Val
  2. 시작지점과 종료지점을 기준으로 문자 추출 대상텍스트를 잘라냅니다.
    Str = Mid(Str, iStart, iEnd - iStart + 1)
  3. 특수문자제외 여부에 따라, 정규표현식에 따라 문자를 추출합니다.
    With CreateObject("VBScript.RegExp")
     
        If ExcludeSpecial = False Then
            .Pattern = "\D"
        Else
            .Pattern = "[^\d!@#$%\^&*()-_+=~`';:""?<>,.]"
        End If
    End With
  4. 추출된 문자를 하나씩 돌아가며 ExtractLetter 함수의 결과값으로 반환한 뒤, 엑셀 문자 추출 함수를 종료합니다.
        .Global = True
        Set match = .Execute(Str)
     
            If match.Count > 0 Then
                ExtractLetter = ""
                For i = 0 To match.Count - 1
                   ExtractLetter = ExtractLetter & match(i)
                Next i
            End If
5 6 투표
게시글평점
10 댓글
Inline Feedbacks
모든 댓글 보기
10
0
여러분의 생각을 댓글로 남겨주세요.x