배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   2003
검색어:   CurrentRegion, AutoFit
제목:   영문과 한글이 혼합되어 있는 데이터 분리하기
     
 

 

 [Excel VBA] 영문과 한글이 혼합되어 있는 데이터 분리하기

  오늘은 3월4일에 진행하는 장미희님 Excel 매크로&VBA 과정 VBA를 활용하여 영문과 한글이 혼합되어 있는 데이터를 분리하는 방법에 대해서 알아보도록 하겠습니다.
(사용버전: 2003)

  엑셀 매크로 또는 엑셀 VBA는 엑셀사용자라면 언젠가는 도전하고 싶은 목표입니다. 실제 주변에서나 본인의 경험상 엑셀VBA로 엑셀 작업시간과 노력이 적게 드는 경우를 빈번하게 경험하고 있습니다. 엑셀 VBA로 편리하게 작업할 수 있는 예를 살펴보겠습니다.

  다음과 같이 한글과 영문이 섞여 있는 자료에서 한글과 영문을 VBA로 작성한 기능으로 각각 다른 열에 분리해서 표시하겠습니다.


<영문과 한글 혼합>


<영문과 한글 분리>
 

 [영문과 한글 혼합- 영문과 한글 분리]

 <1> 사용되는 명령어들

  엑셀VBA작업을 하려면 VBA명령어와 엑셀의 기능에 대해 잘 알고 있어야 합니다. VBA명령어는 VBA를 학습하면서 배워나가면 되고 엑셀 기능은 엑셀을 많이 사용해서 이런 저런 상황에서 적합한 엑셀 기능을 사용할 수 있어야 합니다. 즉, 사용되어야 하는 엑셀 기능의 VBA 표현식을 작성하기가 쉽거든요.

- VBA의 고유의 명령어
 CurrentRegion : 연속적으로 데이터가 입력되어 있는 범위
 Offset(행,열) : 위치를 지정하는 행과 열만큼 이동
 Resize(행,열) : 범위의 크기를 지정하는 행과 열만큼 범위 재지정

- VBA 명령어지만 엑셀의 함수이름과 같은 기능을 가지는 명령어
 Len : 데이터의 길이를 구하는 함수
 Asc : 글자의 아스키코드 값을 구하는 함수
 Mid : 문자열 데이터에서 지정된 위치에서 지정된 개수만큼 데이터 추출
 Left : 문자열 데이터에서 지정된 개수만큼 왼쪽에서 데이터 추출
 Right : 문자열 데이터에서 지정된 개수만큼 오른쪽에서 데이터 추출

- 엑셀의 열 너비 자동맞춤 기능을 VBA에서 사용
 AutoFit : 열과 행의 너비와 높이를 자동으로 조절

 

 <2> 아스키 값
  한글과 영문을 분리하는데 사용하는 아스키 값입니다.

<3> 실제 작성한 VBA 코드입니다.

Sub 이름분리()
Dim i As Integer
Dim word As Integer
Dim rng As Range
Dim 행수 As Integer

행수 = Range("A1").CurrentRegion.Rows.Count
For Each rng In Range("a1").CurrentRegion.Offset(1, 0).Resize(행수 - 1, 1)
For i = 1 To Len(rng)
word = Asc(Mid(rng, i, 1))
If ((word >= 65 And word <= 122) Or word = 32) Then
Else
rng.Offset(0, 1) = Left(rng, i - 1)
rng.Offset(0, 2) = Right(rng, Len(rng) - i + 1)
Exit For
End If
Next
Next
Columns("b:c").AutoFit
End Sub