엑셀 매크로 완전 정복 — 절대참조, 상대참조, 정렬/부분합, 조건검색 매크로 쉽게 배우기
안녕하세요! 이번 글에서는 엑셀 매크로의 개념부터 VBA 코드 실습까지 기초부터 하나씩 쉽게 정리해보겠습니다.
처음 엑셀 매크로를 접하는 분도 따라 하기만 하면 바로 적용할 수 있도록 설명드리겠습니다.
매크로(Macro)란 무엇인가?
매크로(Macro)란 여러 명령을 묶어서 한번에 실행할 수 있도록 만든 명령 집합입니다. 엑셀에서는 매크로를 통해 반복되는 작업을 단 한 번의 클릭으로 처리할 수 있습니다.
-
VBA(Visual Basic for Applications) 언어로 매크로를 작성 가능
-
자동매크로 기능: 사용자의 작업을 VBA 코드로 자동 기록 가능
주의사항
매크로 파일은 악성코드 위험이 있어 엑셀 기본 설정에서 실행이 차단되어 있으므로 반드시 신뢰할 수 있는 파일만 실행해야 합니다.
매크로 사용 설정
-
파일 → 옵션 → 리본 사용자 지정 → 개발도구 체크
-
개발도구 → 매크로 보안 → 모든 매크로 사용
절대참조 매크로 만들기
절대참조 매크로는 고정된 위치에서만 실행되는 매크로입니다.
예: B2:B11의 제곱값을 C2:C11에 저장
VBA 코드
코드 설명
-
Range("C2").Select
: C2 셀 선택 -
ActiveCell.FormulaR1C1 = "=RC[-1]^2"
: 왼쪽 셀 값의 제곱 -
Selection.AutoFill Destination:=Range("C2:C11")
: C2부터 C11까지 복사
R1C1 형식이란?
엑셀 수식 표기 방식에는 두 가지가 있습니다.
-
A1 표기법: 일반적인
B2
,C2
같은 셀 주소 -
R1C1 표기법:
R
= 행(Row),C
= 열(Column)-
RC[-1]
→ 현재 셀의 왼쪽 셀 -
RC[1]
→ 현재 셀의 오른쪽 셀 -
R[1]C
→ 현재 셀의 아래쪽 셀
-
여기서는 RC[-1]^2
이므로
→ 현재 셀의 왼쪽 셀 값을 제곱하겠다는 의미입니다.
상대참조 매크로 만들기
상대참조 매크로는 임의의 셀에서 매크로를 실행해도 왼쪽 셀을 기준으로 작업합니다.
VBA 코드
코드 설명
-
ActiveCell.FormulaR1C1
: 현재 셀 기준 왼쪽 셀의 값 제곱 -
Selection.AutoFill
: 현재 셀 기준 아래 10개 셀 자동 채우기
정렬 및 부분합 매크로
부서별 정렬과 부서별 급여 부분합, 초기화를 매크로로 자동화
부분합 예제
-
데이터 → 부분합
-
그룹, 계산항목, 통계량 선택
-
확인
버튼 생성
-
개발도구 → 삽입 → 양식 컨트롤 버튼
-
버튼에 매크로 연결
오류 예외 처리 팁
-
정렬 전 부분합 삭제 필수
-
자료 내부 셀을 선택하지 않으면 오류 발생 가능
조건 검색 매크로
라디오 버튼으로 중부, 서부, 동부 자료만 보기 또는 전체 보기
VBA 코드 예제
서부/동부/전체 보기 코드
-
서부영업소:
Rows("32:50").EntireRow.Hidden = False
-
동부영업소:
Rows("51:74").EntireRow.Hidden = False
-
전체보기:
Rows("7:75").EntireRow.Hidden = False
라디오 버튼 설정 방법
-
개발도구 → 삽입 → 옵션단추
-
라디오 버튼 우클릭 → 매크로 지정
중요 내용 정리
-
매크로란 명령어 집합으로 반복 작업 자동화 가능
-
절대참조 : 고정 위치 기준 작업
-
상대참조 : 현재 셀 기준 작업
-
정렬/부분합 매크로로 데이터 분석 자동화 가능
-
조건 검색 매크로로 선택된 구역만 표시 가능
-
VBA 코드에서 불필요한 부분 삭제로 효율적인 코드 관리
객관식 문제
1. 다음 중 매크로의 기능으로 옳은 것은?
① 셀 병합 기능
② 반복 작업을 자동으로 처리
③ 피벗 테이블 작성
④ 차트 작성
정답: ②
해설: 매크로는 반복 작업 자동화가 주목적
2. 절대참조 매크로의 특징은?
① 상대적인 위치에서 실행
② 실행할 셀의 위치에 따라 결과가 달라짐
③ 고정된 위치에서 실행
④ 여러 엑셀 파일에 적용 가능
정답: ③
해설: 절대참조는 고정된 셀 위치에 동작
3. 매크로에서 라디오 버튼을 눌렀을 때 특정 자료만 표시하게 하는 명령은?
① Sort
② AutoFill
③ Rows.Hide
④ EntireRow.Hidden
정답: ④
해설: 특정 행을 숨기거나 표시할 때 사용