rand(life)
한 셀에 들어있는 영어 + 한글을 별개의 셀로 분리하는 작업 본문
지난 번에 쓴 글과 비슷한 내용인데
A처럼 되어있는 것을 B와 C열로 분리하는 작업이다.
Option Explicit
Sub macro()
Dim r As Range
Dim lc As Long
Dim s As String
Dim bl As Boolean
For Each r In Range("A1").EntireColumn.SpecialCells(2)
Do
lc = lc + 1
s = Mid(r, lc, 1)
If Asc(s) = 32 Then
bl = False
ElseIf Asc(s) < 97 Or Asc(s) > 122 Then
bl = True
End If
Loop Until bl = True
r(, 2) = Left(r, lc - 1)
r(, 3) = Mid(r, lc)
lc = 1
bl = False
Next
End Sub
SpecialCells(2) 는 상수값이 들어있는 셀을 의미한다. 쉽게 말해 빈칸이 아닌 셀을 말한다.
s = Mid(r, lc, 1) 해당 문자열에서 한 글자씩 떼어내서 아스키값을 검사한다.
Asc(s) = 32 아스키값 32는 공백 한칸이다. 1,4 행처럼 숙어도 있기 때문에 공백을 발견하면 자르는 것이 아니라, 영어 소문자가 아닌 것을 만나면 잘라야한다. 그래서 공백이 나올때는 무시하고 지나간다.
ElseIf Asc(s) < 97 Or Asc(s) > 122 Then 영어 소문자의 아스키값은 97~122이다. 이 범위에서 벗어나는지를 검사한다.
bl = True 영어 소문자가 아니면 bl을 True로 설정하고,
Loop Until bl = True bl이 True이면 순환문을 종료
r(, 2) = Left(r, lc - 1) 오른쪽 한칸 위치에는 문자열 왼쪽부터 종료한 위치까지
r(, 3) = Mid(r, lc) 오른쪽 두칸 위치에는 종료한 위치부터 문자열 끝까지