[VBA기초] 공백제거
엑셀을 다루다보면 첫번째 셀만 공백을 제거하고 싶을 때가 있습니다.
보통은 Trim 함수를 사용하면 제거가 되는데요.
위 엑셀은 Trim 함수를 써도 첫번째 공백이 제거가 되지 않네요.
시스템에서 가져온 데이터들이 보통 이런 경우들이 많은데요.
이런 경우에는 어떻게 해결할까요?
바로 아스키코드 값을 알아낸 다음에 셀의 첫번째 문자열의 값을 알아내는 겁니다.
Sub 첫문자열공백제거()
Dim rngTarget As Range
Dim rngC As Range
Dim sName As String
ActiveCell.Select '// 현재 커서가 있을 셀 선택
Set rngTarget = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
For Each rngC In rngTarget
sName = Left(rngC.Value, 1) '// 첫번째 문자열 추출
'MsgBox Asc(sName) '//첫공백의 아스키 값을 알아내고자 한다면...
If Asc(sName) = 63 Or Asc(sName) = 32 Then '//스페이스바의 아스키 값은 32
rngC = Mid(rngC, 2, Len(rngC))
ElseIf Asc(sName) < 65 Or Asc(sName) > 90 Then '// 첫글자가 영문자 대문자가 아닌지 검사
rngC = UCase(sName) & Right(rngC, Len(rngC) - 1)
'// 첫글자를 영문대문자로 변경 처리
End If
Next
End Sub
위 VBA 함수를 이용하여 MsgBox Asc(sName) 를 활성화하여 공백의 값을 알아냅니다.
스페이스바의 아스키 값은 32 이더군요. (http://link2me.tistory.com/222 게시물 참조)
그런 다음에 'MsgBox Asc(sName) 로 처리하고 나서 F5 를 누르면 됩니다.
아니면 단축키 매크로 만들면 되구요.
첫 문자열 공백제거를 위한 단축키를 만들어서 누르면 ActiveCell 이 있는 열 전체가 모두 공백이 제거 됩니다.
공백의 아스키 값을 알아낼 수 없었다면 힘들게 하나 하나 지우는 고생을 했을 수도 있고
강제로 Mid함수를 이용하여 해당 행만 업데이트 할 수 있습니다.
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 셀 분리하여 현재 시트에 뿌리기 (2) | 2014.01.18 |
---|---|
[VBA] 연속되는 값의 증가 최대값 모두 구하기 (0) | 2014.01.14 |
[VBA] 연속되는 값의 최대값 구하기 (1) | 2014.01.11 |
[VBA응용] VLookup VBA 이용한 예제 1 (3) | 2014.01.11 |
[VBA] Vlookup 함수 VBA 로 업무를 편하게 (16) | 2013.12.23 |