엑셀 시트에 복사해 온 데이터 중 공백이 다수 있다면 제거해야 합니다. 데이터의 양이 많으면 일일이 삭제하기 힘들기 때문에 매크로 함수를 이용하는 것이 좋습니다. 소스는 간단합니다. 현재 Active 된 시트의 전체 셀을 읽어 와서 각 셀마다 Trim() 함수로 제거한 뒤 다시 해당 셀에 집어 넣는 방식입니다. 핵심 소스는 한 줄입니다.
▼ 아래 그림과 같이 다른 곳에서 가져온 데이터에 공백이 있는 경우 매크로를 이용해서 제거해 보겠습니다.
▼ 프로그램 상단에 있는 [개발 도구] 탭을 누르시면 매크로 리본 메뉴가 있습니다. 클릭하시면 팝업창이 뜨는데 매크로 실행 함수 명을 적고 오른쪽에 있는 [만들기] 버튼을 클릭합니다.
▼ 매크로 함수를 만든 후 아래 소스를 복사해서 넣습니다. 공백을 제거하는 함수는 Trim() 함수 입니다. 그럼 셀에 있는 양쪽의 공백이 제거되며 중간에 있는 공백은 한 칸만 제거 되고 남습니다.
Sub TrimFunction()
' 시트 전체 지정
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
' 특정 시트 지정
'Set rng = ActiveSheet.UsedRange.Range("A2", "C8")
For Each ea In rng
ea.Value = Trim(ea.Value)
Next ea
Set rng = Nothing
End Sub
▼ 매크로를 실행한 결과 입니다. “황준영” 과 “백세미” 데이터는 중간에 3칸의 공백이 있었는데 한 칸만 제거되고 나머지는 남아 있죠. 엑셀에서 제공해주는 TRIM() 함수와는 차이가 있습니다. TRIM() 함수에서는 중간 공백을 제거할 때는 한 칸만 남기고 전부 제거하기 때문입니다.
▼ 참고로 왼쪽에 있는 공백과 오른쪽에 있는 공백을 각각 제거하는 함수가 별도로 있습니다. 왼쪽은 LTrim() 이며 오른쪽은 RTrim() 입니다. 한 쪽만 공백을 제거하고 싶다면 둘 중 하나를 사용하시면 되겠죠.
Sub TrimFunction()
' 시트 전체 지정
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
' 특정 시트 지정
'Set rng = ActiveSheet.UsedRange.Range("A2", "C8")
For Each ea In rng
ea.Value = LTrim(ea.Value)
ea.Value = RTrim(ea.Value)
Next ea
Set rng = Nothing
End Sub
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 스핀(Spin) 컨트롤 사용하기 (0) | 2023.07.03 |
---|---|
엑셀 VBA 영역을 선택했을 때 이벤트 처리하기 (0) | 2023.07.02 |
엑셀 VBA 사용자 정의 폼에서 그림 표시와 셀에 추가하기 (0) | 2023.07.02 |
엑셀 VBA 무한 루프 빠져 나오거나 취소 기능 없애는 방법 (0) | 2023.06.29 |
엑셀 VBA 날짜 데이터를 비교하거나 연산하기 (0) | 2023.06.27 |
엑셀 VBA 변수 범위 종류와 설정 방법 (1) | 2023.06.23 |
엑셀 VBA 정규식으로 한글, 일어, 한자 추출하기 (3) | 2023.06.22 |
엑셀 VBA Cells 속성의 다양한 사용법 (0) | 2023.06.22 |