728x90

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

 

 

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

 

728x90
블로그 이미지

Link2Me

,