티스토리 뷰

컴퓨터활용능력 2016년도 3회 필기 기출 문제 32번을 풀이한 것이다.
엑셀 매크로 상대 참조로 기록의 기능을 묻는 문제이다.

32. 새 워크시트에서 [A1] 셀에 셀 포인터를 두고, [개발 도구] 탭의 [상대 참조로 기록]을 선택한 후 [매크로 기록]을 클릭하여 [그림A]와 같이 데이터를 입력하는 ‘매크로1’을 작성 하였다. 다음 중 [그림B]와 같이 [C3] 셀에 셀포인터를 두고 ‘매크로1’을 실행한 경우 ‘성적 현황’이 입력되는 셀의 위치는?

[그림0] 상대 참조 매크로 기록 보기


① [B1]     ② [C3]
③ [C4]      [D3]

풀이 :

엑셀로 매크로 '상대 참조로 기록' 은 '매크로' 메뉴의 하위에도 포함되어 있다. 문제에서는 '개발 도구' 탭의 '상대 참조로 기록' 을 언급하면서 혼란을 주고 있지만 동일한 기능이란 것은 먼저 알아두자.

[필기 풀이] 컴활2급 기출문제 2006년2회-31번 엑셀 매크로 설명 :
http://secstart.tistory.com/828

참고로, 개발 도구 탭은 엑셀의 기본 설정에서는 보이지 않는다. 이를 추가하는 방법은 다음의 링크를 참고하자.

[엑셀 기초] 엑셀 리본 메뉴에 개발 도구 탭 추가하기 :
http://secstart.tistory.com/855

우리가 흔히 말하는 엑셀 '매크로 기록' 으로 매크로를 작성한다면, 매크로는 셀의 위치를 절대 주소 프로그래밍한다. 그래서 문제와 같이 C3 셀에 셀 포인터를 놓고 기록된 매크로를 실행하더라도 보기의 [그림A] 와 같이 B2 셀에 '성적 현황' 이 입력된다.

결국, 문제의 의도는 매크로 기록에서 상대 참조(와 절대 참조의 차이)를 알고 있는가 이다.

[필기 풀이] 컴활2급 기출문제 2006년1회-27번 엑셀 매크로 기록 :
http://secstart.tistory.com/790

엑셀 매크로 상대 참조로 기록

자, 이제 문제를 풀어 보면서 '상대 참조로 기록' 의 기능을 이해해 보자. 먼저 문제의 요구대로 매크로를 작성한다.

[그림1] 엑셀 상대 참조로 매크로 기록하기[그림1] 엑셀 상대 참조로 매크로 기록하기



ㄱ. A1 셀에 셀포인터를 놓는다.
ㄴ. 엑셀 리본 메뉴 > 개발 도구 탭 > 상대 참조로 기록 을 클릭하여 기능 활성화
ㄷ. '매크로1' 로 매크로 기록을 시작하고 [그림A] 의 데이터 입력
ㄹ. 매크로 기록과 같은 매크로 중지 버튼 클릭으로 매크로 작성 완료.

C3 에서 상대 매크로 실행

이제, 작성한 상대 참조 매크로를 실행해 보자.

ㄱ. C3 셀에 셀포인터를 놓는다.
ㄴ. 개발 도구 탭의 매크로 버튼, 혹은 보기 탭 > 매크로 를 클릭하여 매크로 창을 연다.
ㄷ. 매크로1 에 포인터를 놓고, 실행 버튼을 클릭하여 매크로1 을 실행한다.

[그림2] 엑셀 매크로 창에서 매크로1 실행[그림2] 엑셀 매크로 창에서 매크로1 실행



*. 상대참조로 기록을 활성화한 상태에서 기록된 매크로는 절대 참조를 사용하지 않는다. A1 셀에서 매크로 기록을 시작하고 열방향 오른쪽 1칸에 '성적 현황' 이 입력되었다.
**. 따라서, C3 셀에서 매크로1 을 실행한다면 열방향 오른쪽 1칸인 D3 셀이 '성적 현황' 이 입력되는 위치이다.

[그림3] 엑셀 상대참조 매크로 실행 결과[그림3] 엑셀 상대참조 매크로 실행 결과



절대 참조 매크로와 상대 참조 매크로 코드 비교

매크로 작성의 방법이 참조의 방법에 따라 이렇게 두가지가 있다는 것을 알았다. 같은 조건으로 두 매크로를 작성한다면 그 코드가 어떻게 다를까? [그림2] 에서 편집 버튼을 실행하고 코드를 분석해 본다. 코드의 핵심은 두 매크로의 셀 선택 행이다.

[그림4] 상대참조 절대참조 매크로 코드 비교[그림4] 상대참조 절대참조 매크로 코드 비교



상대 참조로 매크로 기록
ㄱ. '매크로1' 은 상대 참조로 매크로 기록된 코드이다.
ㄴ. 상대 참조로 매크로 기록 : ActiveCell.Offset(0, 1).Select
ActiveCell : 활성셀 포인터 위치를 의미.
Offset(0, 1) : 열방향 1칸을 의미. Offset( 행간격, 열간격 )
Select : 선택한다는 메소드( 명령 )
ㄷ. 즉, "현재 셀포인터에서 열방향 1칸을 선택하라" 는 의미의 코드이다.

참고로 Offset 함수는 엑셀 함수 사용법과 같다.

[컴활 1급] 기준점으로부터의 상대 위치, 엑셀 OFFSET 함수 :
http://secstart.tistory.com/632

절대 참조로 매크로 기록
ㄱ. '매크로2' 는 절대 참조로 매크로 기록된 코드이다.
ㄴ. 절대 참조로 매크로 기록 : Range("B1").Select
Range("B1") : B1 셀을 범위로 선택한다.
Select : 선택한다는 메소드
ㄷ. 즉, "B1 셀을 선택하라" 는 의미의 코드이다.

두 매크로 기록 방법 모두, 그 다음 코드 행에서 선택 셀에 '성적 현황' 을 입력한다.

물론, 프로그래밍 코드라 어려울 것이다. 이해되지 않는다면 코드 비교는 건너띄어도 상관이 없다. 그러나 이해된다면 상대 참조와 절대 참조 매크로 의 차이가 바로 그려질 것이다.

[필기 풀이] 컴활2급 기출문제 2006년1회-32번 엑셀 VBA 매크로 :
http://secstart.tistory.com/799

엑셀에서 우리가 잘 사용하지 않았던 '상대참조로 매크로 기록' 을 배워보았다. 현재셀이 기준이기에 반복 작업에서 절대 참조 매크로 보다 활용도가 높을 수 있다.

정답 : 4번

[필기 풀이] 컴활2급 기출문제 2016년3회-31번 엑셀 방사형 차트 :
http://secstart.tistory.com/854

마늘빵.


댓글