2013년 6월 14일 금요일

[엑셀] 한글 영문 혼용 셀에서 한글, 영문 추출

출처 : 엑셀 하루에 하나씩 카페


1.해당 엑셀 시트에서 Alt+F11을 누르거나, 도구-매크로-'Visual Basic Editor"를 실행합니다.
2. VBA편집기가 나오면, 메뉴바에서 "삽입-모듈"을 실행합니다.
3. 하얀 백지화면이 나오면 아래 코드를 그대로 복사해다가 붙여넣습니다.
4. Alt+F11을 눌러 다시 원래의 워크시트로 돌아오십니다.
5. 일반 워크시트 함수와 똑같이 사용하시면 됩니다.

** 단점은 띄어쓰기가 된 걸 인식하지 못한다는 것이다.
    그래서 편법으로 " " 공백문자를 인식하도록 하는" "를 추가했다.
    두개의 조건문에 모두 넣으니 인식이 안되길래 한번씩 사용하는 걸로 하고 두번에 걸쳐서 자료를 추출했더니
    원하는 결과값이 얻어졌다. 심봤다!!!!!!!!!!

아래 함수를 직접 만들어주신 분께 정말 감사드립니다


Function CutText(sText As String, Optional LanguageType As Integer = 1) As Variant

' ----------------------------------------------------------------------------------------
설명 : 인수로 전달한 sText 에서 LanguageType  값에 따라 지정한
'        형식의 텍스트만 분리해서 전달합니다.
'         LanguageType  사용값
'         1 : 숫자
'         2 : 영어 : 띠어쓰기 인식하도록 " " 추가하고, ' 인식하도록 추가
'         3 : 한글
'         4 : 한자
작성일 : 2005 / 9 / 20
' ----------------------------------------------------------------------------------------

    Dim sCut As String
    Dim sTMP As String
    Dim i As Integer
   
    Application.Volatile

    If LanguageType > 4 Then
        CutText = CVErr(xlErrNA)    '#N/A 오류를 반환
        Exit Function
    End If
   
    For i = 1 To Len(sText)
   
        sCut = Mid(sText, i, 1)
   
        Select Case sCut
            Case 0 To 9
                If LanguageType = 1 Then sTMP = sTMP & sCut
            Case "a" To "z", "A" To "Z", " ", "'"
                If LanguageType = 2 Then sTMP = sTMP & sCut
            Case "" To "", "" To "", "" To ""
                If LanguageType = 3 Then sTMP = sTMP & sCut
            Case Else
                If LanguageType = 4 Then
                    If Asc(sCut) >= -13663 And Asc(sCut) < 0 Then sTMP = sTMP & sCut
                End If
        End Select
   
    Next
   
    CutText = sTMP
   
End Function
 

댓글 없음:

댓글 쓰기