rand(life)

[VBA] "한글, 영어" 구조에서 앞쪽 한글만 지우기 본문

컴퓨터/엑셀

[VBA] "한글, 영어" 구조에서 앞쪽 한글만 지우기

flogsta 2018. 6. 13. 09:58

예를 들어 아래와 같이 셀 하나에 한글, 영어가 이어서 나오는 경우, 한글은 지우고 영어만 남기려고 할때

 값비싼, 일류의, 화려한 expensive, popular, and fashionable


영어 소문자의 아스키코드는 97에서 122까지라는 점을 이용한 방법이다. (출저: https://blog.naver.com/dowahn/130172409926)


 replace 함수도 이용했다. 워크시트함수의 replace나 '찾기바꾸기'의 replace와 약간 다르니 주의할 필요가 있다.

replace(문자열, 찾을문자, 바꿀문자, 시작위치, 문자의길이)


Sub checkhangul()

Dim r As Range, intAsc As Long, sAll As String, i As Long

For Each r In Range("B1").EntireColumn.SpecialCells(xlCellTypeConstants)

    sAll = CStr(r.Value)

    Do

        s = Mid(r, i + 1, 1)  '문자를 하나씩 차례대로

        intAsc = Asc(s)  '아스키 코드 얻기

            If intAsc < 97 Or intAsc > 122 Then '영어 소문자가 아니면

            sAll = Replace(r, s, "", i + 1, 1) '해당 문자를 i+1의 위치에서 1글자만큼 공백으로 바꾼다

            End If

            i = i + 1

            If i >= Len(r) Then Exit Do  '한글+영어의 구조가 아닌 셀의 경우를 위해 필요한 구문

    Loop Until intAsc >= 97 And intAsc <= 122  '영어 소문자가 등장할때까지 반복

    r(, 0) = sAll

    i = 0

Next

End Sub

통합 문서1.xlsm