왕 초보용 엑셀 매크로(VBA) 배우기 - 3 (중복 행 찾기 2/4)

by 지천명영어 posted Jan 12, 2022
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

제가 엑셀 매크로(VBA)을 배운 첫번째 이유

제가 엑셀을 배운 이유는 2가지입니다.

첫째, 수학과 숫자를 싫어했지만, 많은 월급에 현혹되어 금융회사에 취직을 하게 됩니다. 그런데 그 당시에 회사에서는 주판(주산)을 사용하고 있었습니다. 

매일매일 엄청난 숫자를 정확하게 기입해야 하는 일을 주업으로 하다 보니, 주판을 배워서 일을 하던지, 주판에 필적할 대안을 찾아야 했습니다.

그래서, 종로서적을 찾아 가서 엑셀3.0 따라잡기 책을 사고 엑셀 공부를 시작하게 되었습니다.


 

왕 초보용 엑셀 매크로(VBA) 배우기 - 2에서 알아본 엑셀 매크로(VBA)는 2개의 셀에서 이름이 같으면서, 동시에 그 행에 있는 핸드폰번호도 같은 경우를 찾아내는 매크로였습니다.

그런데 실제로 우리에게 주어진 데이터는 너무너무 지저분합니다.

그래서, 데이터를 서로 비교하기 쉽도록 정비해야 합니다.

1. 이름(문자) 데이터 정리하기

① 시작 문자 왼 여백과 끝 문자 여백 없애야 합니다.

② 이름 사이사이에 있는 공백 문자를 없애야 합니다.

③ 눈에 안 보이는 줄바꾸기(캐리지 리턴)이 있는 경우 없애야 합니다.

 

이미지 001.png

 

위의 쉬트에 1번 회원은 성과 이름에 공백(스페이스)가 1개 들어있으며,

7번 회원은  이름 앞에 공백(스페이스)이 1개 있습니다.

8번 회원은 눈에는 안 보이지만 줄바꿈(캐리지 리턴) 문자가 1개 들어있습니다.

이미지 002.png

 

 

이 세 가지를 정리하는 방법은 아래와 같습니다.

① Cells(i, 2) = Replace(Cells(i, 2), " ", "")

B 칼럼에 있는 회원이름에서 공백을 찾아서 없애라는 명령입니다.

왼쪽에 있는 셀에는 오른쪽에 있는 셀에서 공백을 찾아서 없애라입니다.

이 replace 명령은 참 많이 쓰는 명령어입니다. 엑셀 쉬트에서 쓰는 함수 = SUBSTITUTE와 완전히 같습니다.

② Cells(i, 2) = Trim(Cells(i, 2))

B 칼럼에 있는 회원이름에서 왼쪽 문자 시작 앞에 있는 공백을 삭제하고, 동시에 끝에 있는 공백을 없애 줍니다.

엑셀 매크로(VBA)의 장점이 여기서 드러납니다. 셀에서 사용하는 함수(=TRIM)와 완전히 같은 방식으로 VBA에서 사용됩니다.

Trim 명령어는 모든 문자열 정리를 할 때 필수 사항입니다.

③ Cells(i, 2) = Replace(Cells(i, 2), Chr(10), "")

캐리지 리턴을 없애는 방법은 사실 ①번  replace 명령의 재활용입니다.

공백을 찾을 때는 " "(따옴표 속에 공백)을 넣어 주면 되지만, 눈에 안 보이는 캐리지 리턴은 그렇게 넣어주기 쉽지 않습니다.(하지만, 실제로 셀에 있는 캐리지 리턴을 복사해서 넣어도 작동은 됩니다.)

여기서 VBA 활용도를 좀 더 높이기 위해서 문자열 코드를 배워봅니다.

 

 

이미지 003.png

 

 

엑셀 쉬트에서 문자 코드를 알아보는 함수는 =Code(셀주소)입니다.

위에 표에 보이는 것처럼 캐리지 리턴은 눈에 보이는 문자는 없지만 코드는 10번을 가지고 있습니다.

여기서 엑셀 매크로(VBA)의 엄청난 장점을 한가지 더 보게 됩니다.

엑셀 매크로(VBA)는 어려운 코드를 암기할 필요도 당연히 없으며, 코드표를 찾을 필요도 없습니다.

왜냐하면 엑셀 쉬트의 셀에 문자를 넣고, =coce(셀주소)를 넣기만 하면 코드를 알려줍니다.

다른 프로그램 언어에서는 절대 할 수 없는 큰 장점입니다.

코드를 가지고 문자열로 바꿔주는 명령어는 Chr(코드번호)입니다. 

이상으로 간단하게 이름 문자열을 정리하는 방법에 대해서 설명을 마침니다.

계속해서 다음 편에 핸드폰번호 정리하는 방법에 대해서 알아보도록 하겠습니다.

왕초보용_매크로(VBA)_3.xlsm  파일 다운로드


Articles

1