왕 초보용 엑셀 매크로(VBA) 배우기 - 12 (공백 행 일괄 삭제하기)

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

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

사용하면서 알아가는 엑셀 매크로(VBA)

기억해 보면, 우리가 처음으로 아래한글 또는 MS 워드와 같은 워드 프로세스를  사용할 때 배우지 않고 바로 문서 작성을 했습니다.  엑셀도 특별히 배우지 않아도 직관적으로 사용합니다. 

엑셀 쉬트에 제목을 적고, 숫자를 써서, 합계를 냅니다.  

물론 워드로 미려하고 아름다운 폼을 만들고 싶다면, 워드 사용법을 익혀야 합니다. 엑셀도 마찬가지죠.

사람들은 로터스123부터 시작한 스프레드 쉬트 프로그램부터 하나 스프레드 쉬트, 쿼트로 프로를 사용하지 않고, 지금은 엑셀 대체재로 존재하는  한셀, 구글 스프레드 쉬트를 거의 사용하지 않고 엑셀을 사용할까요?

바로 쉬운 사용법 때문입니다. 엑셀 쉬트에 존재하는 무수한 함수도 사용하기 쉽지만, 엑셀 매크로(VBA) 명령어도 아주 쉽습니다.

예를 들면, A1셀에 있는 내용을 지우고 싶다면, 

직접 쉬트에서 키보드와 마우스를 사용하는 방법이 있습니다.

① A1셀 마우스 좌클릭 - 키보드 Del키 클릭하면 되고,

② A1에서 마우스 좌클릭 - 리본메뉴 - 홈 - 모두지우기도 됩니다.

엑셀 쉬트에서 키보드와 마우스를 사용하지 않고, 매크로(VBA)를 사용해도 여러 가지 방법으로 가능합니다.

① Range("A1") = "" 

② Range("A1").Clear 

③ Range("A1") = Null 

④ Cells(1, 1) = "" 

⑤ Cells(1, 1).Clear 

⑥ Cells(1, 1) = Null

⑦ Cells(1, "A") = "" 

⑧ Cells(1, 1).Select

     Selection.Clear

위 8가지 방법 이외에도 더 있습니다. 즉, 엑셀 매크로(VBA)는 정형화된 방법으로 문제를 해결할 필요가 없이, 스스로 해결책을 찾을 수 있는 다양한 방법을 가지고 있습니다. 

우리가 워드 프로그램을 아무 지식 없이 사용하듯이, 엑셀 매크로(VBA)도 누구나 쉽게 접근할 수 있도록 만들어진 간단한 프로그램입니다.


 

이전에 배웠던 "매일10페이지책읽기" 매크로(VBA)는 어려운 수준입니다.

실제 업무에서 발생하고 해결해야 하는 정도로 어려운 편이었습니다.

이번에는 그것보다는 훨씬 쉬우면서, 실제 업무에 많이 사용되는 매크로(VBA) 예제로 공부하겠습니다.

 


매크로(VBA) 이름 : 빈_행_삭제하기

엑셀로 데이터를 관리하다 보면, 셀 중간에 불필요한 공백 셀이 생기게 됩니다.

특히 vlookup 함수를 이용하는 경우 자주 발생합니다.

이런 경우 일반적으로 엑셀의 정렬 기능을 사용해서, 공백 셀을 맨 밑으로 보내주면 됩니다.

그런데, 아래 그림처럼 열(칼럼)이 비어있는 경우 데이터가 엉키는 참사가 나타납니다.

그래서 데이터 있는 그대로 불필요한 공백셀을 삭제하는 매크로를 작성해 봅니다.


 

이미지 001.png

 

 

위 그림과 같은 엑셀 데이터가 있으며, 그중에 일부 회원의 핸드폰번호가 없습니다. 즉, 3번 나가자 회원과, 6번 우리는 회원의 핸드폰번호가 없으며, 핸드폰번호를 제공하지 않는 회원을 삭제하고자 합니다.

이런 경우 C열 기준으로 정렬을 1회, 그리고, A열 기준으로 정렬하게 되면 데이터 순서를 유지하면서 3번회원과, 6번회원을 제거할 수 있습니다.

하지만, 실제 업무 중에 나타나는 데이터 테이블을 방대하고, 정렬 도중에 데이터가 뒤섞이기도 합니다.

아래와 같은 단순한 5줄짜리 엑셀 매크로(VBA)를 사용하게 되면, 완벽한 데이터를 쉽게 얻을 수 있습니다.

 

이미지 002.png

 

 

지금까지 배웠던 for next 명령과, if 명령, 맨끝셀 찾기 명령, 3가지로만 만들어진 액셀 매크로(VBA)입니다.

단지 차이점이 있다면, for next 명령어 사이에 있는 step -1 이라는 문구가 삽입된 것입니다.

step -1 이란 정방향이 아닌 역방향으로 1개씩 작업해라 뜻입니다.

왜냐하면 바로 if 명령문 때문입니다. 

If Cells(i, i_columns) = "" Then Rows(i).Delete

(만약 셀(i, i_columns) = 공백 이면 행(i).삭제해라)

즉, 정방향으로 3번회원을 삭제할 경우 i = 4 입니다. 

그런데 rows(4)를 삭제하면 행번호4자리에   행번호5번 데이터가 자리 잡게 됩니다.

행을 삭제하게 됨에 따라, 비어있는 행에 밑에 있던 모든 행들이 따라 올라옵니다.

(손으로 직접 마우스 우 클릭해서, 4행을 삭제해 보세요. 단순한 원리입니다.)

즉, 행번호가 변경하기에 에러가 발생할 수 있습니다. 그래서 행번호를 그대로 유지하면서 공백셀을 삭제하기 위해서, 맽 아래 셀부터 작업을 하게 됩니다.

즉, 4번행 삭제 후, 7번행을 삭제하는 대신에, 7번행을 삭제하고 나서 4번행을 삭제하는 순서를 만들었습니다.

바로 역순으로 삭제한다는 뜻이 MaxRow To 2 Step -1(맽끝셀 부터 2번까지, 1단계 역순으로) 입니다. 

이미지 003.png

 

 

단순하지만, 아이디어로 어려운 문제를 아주 쉽게 해결하는 방법입니다.

공백_셀_삭제하기() 매크로를 실행하면 위와 같은 깔끔한 화면으로 정리됩니다.

vlookup 함수로 지저분해진 데이터를 깔끔하게 정리할 수 있는 단 5줄짜리 매크로, 효율을 엄청납니다.

파일 첨부합니다.

 

왕초보용_공백셀_삭제하기.xlsm

첨부파일왕초보용_공백셀_삭제하기.xlsm 파일 다운로드


Articles

1