[컴퓨터활용능력 1급 필기] 10년 2회차 시험지 PDF 다운로드
10년 2회차
CRC 방식과 패리티 검사 방식, 정마크 부호 방식은 모두 데이터 전송 중 발생한 오류를 검출하기 위한 기법이다.
반면 CSMA/CD는 이더넷 등에서 여러 단말이 하나의 전송 매체를 공유할 때 충돌을 감지하고 회피하기 위한 매체 접근 제어(MAC) 방식으로, 오류 검출과는 목적이 다르다.
[컴퓨터 관리]에는 디스크 관리, 장치 관리자, 디스크 조각 모음 등의 도구가 포함되어 있어, 디스크 포맷과 드라이브 문자 할당, 하드웨어 드라이버 업데이트, 조각난 파일의 통합 작업을 수행할 수 있다.
그러나 시스템 끄기나 다시 시작을 수행하는 작업 관리자는 [컴퓨터 관리] 대화상자에 포함된 항목이 아니라 별도로 실행되는 도구이다.
ICMP(Internet Control Message Protocol)는 호스트나 라우터가 목적지에 도달할 수 없는 등 오류 상태를 통지하거나, 예상치 못한 상황에 대한 정보를 알리기 위해 사용되는 인터넷 프로토콜이다.
ARP와 RARP는 IP 주소와 물리적 주소(MAC 주소)를 서로 변환하는 프로토콜이며, IP는 데이터를 목적지까지 전달하는 기본적인 통신 프로토콜로 오류 통지 기능과는 별도의 프로토콜이다.
[화면 보호기] 탭에서는 모니터 전원을 절약하기 위한 전원 옵션을 지정할 수 있고, [화면 배색] 탭에서는 메뉴나 제목 표시줄 글꼴의 크기를 설정할 수 있으며, [바탕 화면] 탭에서는 배경 화면으로 사용할 그림을 지정할 수 있다.
다만 바탕 화면의 테마를 설정하는 기능은 [설정] 탭이 아니라 별도의 [테마] 탭에서 제공된다. [설정] 탭은 화면 해상도나 색 품질 등을 조정하는 곳이므로, 테마 설정을 [설정] 탭의 기능으로 서술한 것은 옳지 않다.
운영체제는 사용자에게 편리한 인터페이스를 제공하고 시스템의 생산성을 높이며, 프로세스·기억장치·주변장치·파일 등을 관리하는 것을 주된 기능으로 한다. 또한 제어 프로그램과 서비스 프로그램으로 구성된다.
그러나 중앙처리장치, 기억장치, 입출력장치로 구성되어 계산을 위한 기본 자원을 제공하는 것은 컴퓨터 하드웨어 시스템 자체에 대한 설명이며, 그 자원을 관리하는 소프트웨어인 운영체제를 가리키는 설명으로는 적절하지 않다.
- 인터넷 표준 그래픽 형식이다.
- 애니메이션을 표현할 수 있다.
- 8비트 컬러 사용으로 256가지 색을 표현할 수 있다.
제시된 설명은 인터넷 표준 그래픽 형식, 애니메이션 표현 가능, 8비트 컬러로 256가지 색 표현이라는 세 가지 특징을 들고 있다. 이 셋을 동시에 만족하는 것은 GIF 형식이다.
GIF는 무손실 압축을 사용해 화질 손상이 없고 투명 배경과 여러 장면을 이어 붙인 움직이는 이미지를 지원하지만, 색상 팔레트가 256가지로 제한되어 색이 풍부한 사진 저장에는 적합하지 않다.
JPG는 24비트 트루컬러를 손실 압축으로 저장해 사진에 알맞지만 애니메이션과 투명을 지원하지 않고, PNG는 트루컬러와 투명을 지원하는 무손실 형식이나 애니메이션 기능이 없으며, MPEG는 정지 그림이 아니라 동영상 압축 표준이라는 점에서 설명과 맞지 않는다.
[검색 결과] 창에서는 파일이나 폴더가 있을 것으로 예상되는 위치(드라이브·폴더)를 지정하거나, 전체·일부 파일 이름 및 특정 단어·문장을 포함하는 조건으로 검색할 수 있고, 마지막 수정 날짜의 범위를 지정해 검색할 수도 있다.
시스템 폴더나 숨김 파일을 포함하도록 검색 옵션을 지정하는 것은 가능하지만, 사용자 계정을 검색 조건으로 지정하는 기능은 제공되지 않으므로 이 설명은 옳지 않다.
공개 키 암호기법은 암호화할 때와 복호화할 때 사용하는 키가 서로 다른 비대칭 키(이중 키) 방식이며, 대표적으로 RSA 기법이 널리 사용된다.
이 방식에서는 누구나 사용할 수 있도록 암호화 키를 공개하고, 복호화에 사용하는 키는 소유자만 비밀리에 보관한다. 복호화 키를 공개하고 암호화 키를 비공개한다는 설명은 공개와 비공개의 대상이 뒤바뀐 것으로 옳지 않다.
MPEG(Moving Picture Experts Group)는 동영상과 관련 음향 데이터를 압축하기 위한 국제 표준 규격으로, CD나 HDTV 등 다양한 매체에서 동영상을 표현하는 데 사용된다.
JPEG는 정지 영상(사진)을 위한 압축 표준이며, GIF와 PNG 역시 정지 이미지를 다루는 파일 형식이라는 점에서 동영상 압축 표준인 MPEG와 구별된다.
Java는 추상화, 상속, 다형성과 같은 특징을 갖는 객체 지향 언어이며, 특정 컴퓨터 구조에 종속되지 않는 가상 바이트 머신코드를 사용해 플랫폼에 독립적으로 실행되고, 네트워크 환경에서의 분산 작업도 지원하도록 설계되었다.
그러나 수식 처리와 기호 처리, 인공지능 분야에 특화되어 사용되는 언어는 LISP 등이며, 이는 Java의 특징으로 보기 어렵다.
FTP는 멀리 떨어진 컴퓨터와 파일을 주고받기 위한 서비스로, 계정 없이 접속할 수 있는 Anonymous FTP 서버가 별도로 존재하며, 텍스트 파일 전송을 위한 ASCII 모드와 실행 파일 전송을 위한 Binary 모드를 구분해 사용한다.
다만 FTP는 파일을 전송하는 프로토콜일 뿐 원격의 프로그램을 실행시키는 기능은 제공하지 않으므로, 서버에 있는 프로그램을 다운로드 없이 실행시킬 수 있다는 설명은 옳지 않다.
[파일 형식] 탭에서는 시스템에 등록된 파일 형식을 확인할 수 있고, [새로 만들기] 단추로 확장명과 연결된 새 파일 형식을 등록할 수 있으며, [고급] 단추를 이용해 등록된 파일 형식의 아이콘 등을 변경할 수 있다.
등록된 파일 형식에 대한 세부 설정을 변경하는 기능은 [고급] 단추에서 제공되며, 이 탭에는 [편집]이라는 별도의 단추가 존재하지 않으므로 [편집] 단추에서 변경한다는 설명은 옳지 않다.
msiexec는 명령줄에서 Windows Installer 패키지(.msi)를 설치, 제거, 복구, 수정하는 데 사용되는 명령어이다.
msconfig는 시스템 구성을 설정하는 도구이고, msinfo32는 시스템 정보를 확인하는 도구이며, mode는 장치의 통신 포트 등을 설정하는 명령으로 각각 목적이 다르다.
가상 메모리는 하드디스크의 일부를 주기억장치처럼 사용해 주기억장치보다 큰 프로그램을 실행할 수 있게 하며, 버퍼 메모리는 속도 차이가 있는 두 장치 사이에서 데이터를 임시로 저장하는 역할을 하고, 연관 메모리는 저장된 내용의 일부만으로도 데이터를 찾아올 수 있는 기억장치이다.
다만 캐시 메모리는 CPU와 주기억장치 사이에서 처리 속도를 높이기 위해 사용되지만, 여기에는 접근 속도가 빠른 정적 램(SRAM)이 주로 쓰인다. 캐시 메모리에 동적 램(DRAM)이 사용된다는 설명은 옳지 않다.
시스템 장애에 대비해 부팅 디스켓을 만들어 두거나, 바이러스 치료 프로그램을 정기적으로 업그레이드하여 실행하거나, [프로그램 추가/제거] 기능으로 프로그램을 정상적으로 제거하는 것은 모두 컴퓨터의 문제를 예방하기 위한 올바른 유지보수 방법이다.
반면 하드디스크의 파티션을 새로 설정(재구성)하면 해당 영역의 데이터가 삭제되므로, 이는 파일 복원을 돕는 예방 조치가 아니라 오히려 데이터 손실을 유발할 수 있는 작업이다.
프린터 속성 창에서는 해당 프린터가 연결된 포트, 지원하는 최대 해상도, 사용 가능한 용지 종류 등 프린터 자체의 사양과 설정 정보를 확인할 수 있다.
반면 현재 인쇄 중인 문서의 이름은 프린터 속성이 아니라, 인쇄 작업 목록을 보여 주는 인쇄 관리자(프린터 대기열) 창에서 확인하는 정보이다.
데이터 근원 인증은 수신 측이 수신한 데이터가 실제로 원래의 송신자로부터 전송된 것임을 확인할 수 있는 기능으로, VPN이 제공하는 대표적인 보안 기능 중 하나이다.
이와 달리 전송 중 데이터가 변조되지 않았음을 보장하는 것은 데이터 무결성이고, 데이터를 다른 사용자가 열람해도 내용을 알아볼 수 없도록 하는 것은 데이터 기밀성이며, 데이터를 특정 프로토콜로 캡슐화해 전송하는 것은 접근 제어가 아니라 터널링에 해당하는 기능이다. 제시된 설명 중 근원 인증에 대한 설명만 그 명칭과 내용이 올바르게 짝지어져 있다.
- 허브나 리피터 등의 전기적 신호를 재발생 시키는 장비
- MODEM, CODEC 등 디지털/아날로그 신호변환기
보기의 장비를 보면 허브와 리피터는 전송 과정에서 약해진 전기적 신호를 증폭·재생해 전송 거리를 늘려 주는 장비이고, 모뎀과 코덱은 디지털 신호와 아날로그 신호를 서로 변환하는 장비다. 둘 다 신호 자체만 다룰 뿐 데이터의 주소나 의미는 전혀 해석하지 않는다.
전송 매체를 통해 비트 신호를 있는 그대로 주고받기 위한 전기적·기계적·기능적 특성을 규정하는 것은 OSI 7계층 가운데 가장 아래층인 물리 계층이다. 따라서 허브·리피터·모뎀·코덱은 모두 물리 계층에 속하는 장비로 분류된다.
비교하자면 MAC 주소를 보고 프레임을 걸러 전달하는 브리지와 스위치는 데이터 링크 계층, IP 주소를 보고 최적 경로를 정하는 라우터는 네트워크 계층, 서로 다른 프로토콜의 망을 연결하는 게이트웨이는 그보다 상위 계층에서 동작한다.
스택은 가장 나중에 저장된 데이터가 가장 먼저 호출되는 후입선출(LIFO) 방식으로 데이터를 관리하는 자료구조이다.
가장 먼저 저장된 데이터가 먼저 호출되는 선입선출 방식은 큐(Queue)에 대한 설명이고, 노드가 선형으로 연결된 구조는 연결 리스트, 부모와 자식 관계를 갖는 노드들이 링크로 연결된 구조는 트리에 대한 설명이다.
이미 설치되어 있는 프린터를 다른 이름으로 다시 설치할 수 있고, 기본 프린터는 인쇄 명령 시 프린터를 별도로 지정하지 않을 때 자동으로 인쇄 작업이 전달되는 프린터로 하나만 지정할 수 있으며, 네트워크 프린터를 사용하려면 프린터의 공유 이름과 연결된 컴퓨터의 이름을 알아야 한다.
그러나 프린터를 추가로 설치했다고 해서 가장 먼저 설치된 프린터가 자동으로 공유되는 것은 아니며, 프린터 공유는 사용자가 별도로 설정해야 하는 작업이다.
윗주는 문자열 데이터가 입력된 셀에만 표시할 수 있는 주석 기능으로, 삽입해도 곧바로 표시되지 않고 [서식]-[윗주 달기]-[표시/숨기기]를 선택해야 화면에 나타난다. 또한 셀의 데이터를 삭제하면 그에 딸린 윗주도 함께 삭제된다.
다만 윗주에 입력한 텍스트는 전체 단위로 서식을 지정할 뿐, 그중 일부 글자만 선택해 별도로 서식을 다르게 지정하는 것은 지원되지 않는다.




두 데이터 집합 사이에서 최적의 조합을 찾을 때 유용한 것은 표면형 차트다. 지형도처럼 가로·세로 두 축의 값 조합에 따른 결과 값을 3차원 곡면의 높이로 나타내고, 값의 범위가 같은 구간을 같은 색과 무늬 띠로 묶어 보여 주기 때문에 어느 조합에서 값이 최대·최소가 되는지 한눈에 알 수 있다.
보기의 그림 중 상자 모양 틀 안에 두 겹의 곡면이 3차원으로 놓여 있는 것이 표면형이며, 이 차트는 항목과 계열이 모두 숫자 값일 때에만 사용할 수 있다는 특징이 있다.
반면 좌표 위에 점을 흩어 놓아 두 변수의 상관관계를 보는 분산형, 전체에 대한 비율을 고리 모양으로 나타내며 여러 계열을 겹쳐 표시하는 도넛형, 점의 크기로 세 번째 값의 크기를 표현하는 거품형은 모두 최적 조합을 찾는 용도와는 거리가 있다.

화면은 페이지 나누기 미리 보기 상태로, 파란 경계선이 J열과 K열 사이(세로 방향)와 12행과 13행 사이(가로 방향)를 지나며 워터마크로 '1 페이지', '2 페이지'가 표시되어 있다. 즉 표가 가로 2 × 세로 2 = 4페이지로 나뉘어 있어 너비와 높이가 모두 한 장을 넘고 있는 상태다.
[페이지 설정]의 자동 맞춤은 지정한 페이지 수에 들어가도록 인쇄 배율을 자동으로 축소해 주는 기능이다. [A1:K20] 범위 전체를 한 장에 담으려면 용지 너비를 1로, 용지 높이도 1로 지정해 가로·세로 양쪽 모두 한 페이지로 줄여야 한다.
너비만 1로 하고 높이를 비워 두면 가로는 한 장에 들어가지만 세로로는 여전히 두 장으로 나뉘고, 반대로 높이만 1로 하면 세로만 합쳐져 각각 2페이지가 된다. 또 확대/축소 배율을 100%로 두는 것은 원래 크기 그대로 인쇄하라는 뜻이므로 페이지 수가 전혀 줄지 않는다.
정의된 이름은 이름 상자의 화살표를 눌러 선택하면 해당 셀이나 범위가 곧바로 선택되며, 이름의 첫 글자는 문자나 밑줄로 시작하고 이후에는 문자·숫자·밑줄·마침표를 사용할 수 있다. 같은 통합 문서 안에서는 동일한 이름을 중복해서 사용할 수 없다.
그러나 'A1'과 같이 셀 주소와 동일한 형태의 문자열은 이름으로 정의할 수 없다. 셀 주소와 혼동될 수 있는 이름의 사용을 제한하기 때문이다.
배열 상수에서 텍스트는 큰따옴표로 묶어 표시하며, 정수·실수·지수형 서식의 숫자는 물론 논리값이나 #N/A와 같은 오류 값도 함께 사용할 수 있다.
다만 배열 상수를 입력할 때 쉼표(,)로 구분한 값들은 가로 방향(행)으로 나열된 값을 의미하므로, {110,20,30,40}은 1행 4열의 배열을 나타낸다. 이를 4행 1열 참조와 같다고 서술한 것은 옳지 않다.
날짜는 내부적으로 일련번호로, 시간은 하루에 대한 비율을 나타내는 소수로 저장되어 연산과 대소 비교가 가능하며, 연도를 00에서 29 사이의 숫자로 입력하면 2000년에서 2029년 사이의 연도로 인식된다. 또한 두 자리 연도를 해석하는 방식은 Windows 설정에서 변경할 수 있다.
다만 날짜와 시간 데이터는 숫자 값으로 취급되므로, 다른 숫자 데이터와 마찬가지로 기본적으로 셀의 오른쪽에 맞추어 표시된다. 왼쪽에 맞추어 입력된다는 설명은 옳지 않다.
정렬 시 빈 셀은 오름차순이나 내림차순 어느 경우든 항상 맨 마지막에 위치하며, 정렬의 첫째 기준은 반드시 지정해야 하고 둘째와 셋째 기준은 필요한 경우에만 추가로 지정한다. 또한 정렬 옵션에서 방향을 바꾸면 기본값인 위에서 아래 방향 대신, 특정 행의 값을 기준으로 열의 순서를 바꾸는 정렬(왼쪽에서 오른쪽)도 수행할 수 있다.
다만 사용자 지정 정렬 순서는 첫째 기준뿐 아니라 둘째, 셋째 정렬 기준에도 적용할 수 있으므로, 둘째와 셋째 기준에는 적용할 수 없다는 설명은 옳지 않다.
[데이터]-[레코드 관리] 기능의 찾기 조건에서는 여러 문자를 대신하는 *나 한 문자를 대신하는 ?와 같은 만능 문자를 사용할 수 있고, =, >, >=, <, <= 와 같은 비교 연산자도 함께 사용할 수 있다.
레코드 관리는 필드가 아닌 레코드 단위로 데이터를 표시·입력·검색·삭제하는 기능이며, 필드를 추가하거나 삭제하는 기능은 제공하지 않는다. 또한 새로 추가한 레코드는 맨 앞이 아니라 마지막에 추가되는 것이 일반적이다.
Sub TEST(단가, 수량, 이름)
Dim 합계 As Long
합계 = 단가 * 수량
MsgBox 이름 & "의 금액 : "& 합계
End Sub
제시된 프로시저는 Sub TEST(단가, 수량, 이름) 으로 선언되어 인수를 세 개 받는다. 내부에서 합계 = 단가 * 수량 을 계산한 뒤 MsgBox 로 이름과 금액을 이어 붙여 표시한다.
Sub 프로시저는 반환값이 없으므로 Call 문 없이 호출할 때는 괄호를 쓰지 않고 인수를 쉼표로 나열한다. 따라서 TEST 200, 500, "이순신" 형태가 옳다.
반대로 Call 을 붙여 호출할 때는 반드시 Call TEST(200, 500, "이순신") 처럼 인수를 괄호로 묶어야 한다. 인수가 둘 이상인데 Call 없이 괄호를 쓰거나 Call 을 쓰면서 괄호를 빼면 문법 오류가 난다. 앞에 등호(=)를 붙이는 것은 워크시트에서 함수를 쓰는 방식이라 VBA 프로시저 호출에는 쓸 수 없다.
LARGE({9,3,7,8},2)는 9,8,7,3 중 두 번째로 큰 값인 8이고, POWER(2,4)는 16, MOD(25,3)은 1이므로 이를 더한 SUM 결과는 25로 문제에 제시된 값과 일치한다. 또 LARGE({9,3,7,8},3)은 세 번째로 큰 값인 7이므로 AVERAGE(7,5)는 6이 되어 이 역시 제시된 값과 같다.
MOD(ABS(-5),3)은 MOD(5,3)=2이고, ABS(MOD(-5,3))은 MOD(-5,3)이 1이므로 ABS(1)=1이 되어, MAX(2,1)의 결과는 2로 제시된 값과 일치한다.
그러나 COUNT(1, "가", SMALL({12,3,4},2))에서 SMALL({12,3,4},2)는 두 번째로 작은 값인 4이며, COUNT 함수는 인수 중 숫자만 개수를 세므로 숫자인 1과 4만 집계되어 실제 결과는 2가 된다. 이 식의 결과를 3이라고 제시한 것은 계산과 맞지 않는다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 사원별 실적 현황 | |||
| 2 | 성명 | 직위 | 부서명 | 실적 |
| 3 | 박행복 | 사원 | 관리부 | 120 |
| 4 | 나사랑 | 대리 | 생산부 | 330 |
| 5 | 한웃음 | 과장 | 홍보부 | 250 |
| 6 | 왕우정 | 대리 | 생산부 | 150 |
| 7 | 조기쁨 | 사원 | 홍보부 | 400 |
| 8 | 채희망 | 대리 | 생산부 | 300 |
| 9 | 직위가 대리인 사람의 평균 실적 | 260 | ||
| 10 | ||||
[D9]는 직위가 '대리'인 사람의 평균 실적이다. 시트에서 대리는 실적 330, 150, 300 세 사람이므로 (330+150+300)÷3 = 260 이고, 실제로 [D9]에 260이 표시되어 있다.
조건에 맞는 값만 골라 평균을 내려면 IF 로 조건을 만족하는 값만 남긴 뒤 AVERAGE 로 평균을 구하는 배열 수식을 쓴다. 조건 판정 대상은 직위가 들어 있는 [B3:B8] 이고 평균을 낼 값은 실적인 [D3:D8] 이다. [B4] 셀의 값이 곧 '대리'이므로 조건을 B3:B8=B4 로 적어도 결과는 같다.
배열 수식은 입력을 마칠 때 Ctrl+Shift+Enter 를 누르며, 그러면 엑셀이 수식 전체를 중괄호로 감싸 {=AVERAGE(IF(B3:B8=B4, D3:D8))} 처럼 표시한다. 등호 뒤에 중괄호가 붙은 ={ … } 형태는 사용자가 직접 친 문자일 뿐이어서 배열 수식으로 인식되지 않고, 조건 자리에 실적 범위를 넣어 D3:D8="대리" 처럼 비교하면 참이 되는 값이 없어 평균을 구할 수 없다.
머리글의 오른쪽 구역에 '[날짜:&[날짜]]'와 같이 작성하면 인쇄된 용지의 오른쪽 상단에 해당 문구와 날짜가 표시되며, 이러한 설정은 [파일]-[페이지 설정]이나 [파일]-[인쇄 미리 보기]의 [설정] 단추를 통해 작성할 수 있다.
다만 머리글에 삽입되는 &[날짜] 코드는 인쇄되는 시점(현재)의 날짜를 표시하는 것이지, 워크시트를 처음 작성한 날짜를 나타내는 것이 아니다. 따라서 출력된 날짜만으로 워크시트의 작성일을 알 수 있다는 설명은 옳지 않다.
Sub Cell_1()
Worksheets("성적표").Range("B2:E5").Copy _
(Worksheets("성적표").Range("B12"))
End Sub
구문은 Worksheets("성적표").Range("B2:E5").Copy (Worksheets("성적표").Range("B12")) 한 문장이다. 줄 끝의 밑줄(_)은 줄 연속 문자로, 다음 줄까지가 한 문장임을 나타낸다.
Copy 메서드는 개체.Copy 붙여넣을위치 형식으로 대상을 인수로 받는다. 즉 점(.) 앞에 있는 [B2:E5] 범위가 복사할 원본이고, 괄호 안에 있는 [B12] 셀이 붙여넣을 대상이다.
따라서 [성적표] 시트의 [B2:E5] 범위를 복사해 같은 시트의 [B12] 셀에 붙여넣는 동작이다. 붙여넣을 위치로 셀 하나만 지정하면 그 셀을 왼쪽 위 모서리로 삼아 원본 크기(4행 4열)만큼 자동으로 채워진다.
표준 차트의 항목, 계열, 데이터는 피벗 차트 보고서에서 각각 항목 필드, 계열 필드, 값 필드에 대응하며, 표준 차트는 워크시트 셀에 직접 연결되는 반면 피벗 차트 보고서는 연결된 피벗 테이블 보고서의 데이터에 기반해 작성된다는 점에서 서로 차이가 있다.
또한 표준 차트는 기본적으로 워크시트에 포함된 차트로 만들어지지만, 피벗 차트 보고서는 기본적으로 별도의 차트 시트에 만들어진다.
다만 그림 영역, 범례, 차트 제목, 축 제목 등을 자유롭게 이동하거나 크기를 조정하는 것은 표준 차트에서는 가능하지만, 피벗 차트 보고서에서는 이러한 항목의 이동이나 크기 조정에 제약이 있다. 두 차트가 이 점에서 동일하다고 서술한 것은 옳지 않다.

차트는 사원 다섯 명의 호봉과 근속년수 두 계열을 나란히 그린 세로 막대형이다. 각 막대 위에 18과 15, 28과 8, 35와 5, 8과 7, 20과 20처럼 숫자가 적혀 있으므로 데이터 레이블이 표시된 상태다.
Y(값) 축은 0부터 40까지 5 간격으로 눈금 값이 있지만 그림 영역 안에 가로줄이 전혀 그어져 있지 않으므로 주 눈금선이 선택되지 않았다. 또 사원과 사원 사이가 뚜렷하게 벌어져 있으니 [간격 너비]에 0보다 큰 값이 지정되어 있다.
[겹치기]는 같은 항목 안에서 계열 막대가 서로 포개지는 정도를 정하는 값이다. 양수를 입력해야 막대가 겹쳐지고, 음수를 입력하면 오히려 계열 사이가 벌어진다. 그림에서는 두 막대가 겹치지 않고 옆면이 맞닿아 있어 겹치기가 0인 상태이므로, 겹치게 하려고 음수를 넣었다는 설명은 방향이 반대다.

왼쪽 표에서 홍차 100, 레몬차 80, 커피 70, 녹차 40을 더한 총수량 [C8]이 290 이고, 오른쪽 데이터 표의 왼쪽 위 모서리인 [F5]에도 같은 290이 들어 있다. 데이터 표는 이 모서리 셀의 수식에 변화값을 대입해 결과를 채우므로, [F5]에는 [C8]과 같은 의미의 수식이 있어야 한다.
변화값은 커피가 [G5:I5]에 100, 110, 120으로 가로로, 녹차가 [F6:F8]에 80, 90, 100으로 세로로 배치되어 있다. 실제로 [G6]의 360은 홍차·레몬차 합 180에 커피 100과 녹차 80을 더한 값이어서 두 값이 함께 대입된 결과임을 알 수 있다.
따라서 두 변수 데이터 표를 만들려면 수식이 든 모서리 셀과 두 방향의 변화값을 모두 포함한 [F5:I8] 을 선택한 뒤 [데이터]-[표]를 실행해야 한다. 결과가 들어갈 [G6:I8]만 선택하면 기준 수식과 대입할 값이 빠져 표를 만들 수 없다.
표가 완성되면 결과 영역의 모든 셀에는 똑같은 배열 수식 {=TABLE( … )} 이 들어가며, 결과 셀 일부만 따로 지우거나 고칠 수 없다.
매크로 이름에는 공백을 포함할 수 없고 반드시 문자로 시작해야 하며, '개인용 매크로 통합 문서'에 저장하면 엑셀을 실행할 때마다 해당 매크로를 사용할 수 있다. 또한 엑셀에서 이미 사용하고 있는 바로 가기 키를 매크로의 바로 가기 키로 지정하면, 매크로가 실행되는 동안 기존의 엑셀 바로 가기 키는 사용할 수 없게 된다.
다만 절대 참조로 매크로를 기록하면 셀의 위치가 항상 고정된 셀을 기준으로 동작하므로, 현재 셀의 위치가 달라져도 매크로가 적용되는 셀은 바뀌지 않는다. 현재 셀 위치에 따라 적용되는 셀이 달라진다는 설명은 상대 참조 기록 방식에 해당하는 내용으로, 절대 참조에 대한 설명으로는 옳지 않다.
Sub Macro1()
For var1 = 1 To 10 Step 3
su = InputBox("입력 값", "값 입력", 10)
hap = hap + Val(su)
Next
Cells(1, 1) = hap
End Sub
InputBox("입력 값", "값 입력", 10) 의 인수는 순서대로 메시지, 제목, 기본값이다. 즉 제목 표시줄에 '값 입력'이, 안내 문구로 '입력 값'이 나오고 입력란에는 기본값 10이 미리 채워져 나타난다.
반복문은 For var1 = 1 To 10 Step 3 이므로 var1이 1, 4, 7, 10 으로 바뀌며 네 번 실행된다. 따라서 입력 대화상자도 세 번이 아니라 네 번 나타난다.
누적 변수는 hap = hap + Val(su) 로 사용자가 입력한 문자열을 숫자로 바꿔 더한 값이므로, 1부터 10까지의 합이 아니라 입력한 값들의 합이다. 결과를 넣는 Cells(1, 1) 은 현재 선택된 셀이 아니라 1행 1열, 곧 [A1] 셀을 가리킨다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | [표1]제품코드 | |||
| 2 | 제품코드 | 제품명 | 판매수량 | 판매금액 |
| 3 | P-3456 | LCD-TV | 7 | 4,550,000 |
| 4 | D-1234 | DVD | 6 | 720,000 |
| 5 | E-5647 | 노트북 | 3 | 2,550,000 |
| 6 | ||||
| 7 | [표2]제품별 단가표 | |||
| 8 | 제품기호 | E | D | P |
| 9 | 판매단가 | 850,000 | 120,000 | 650,000 |
[표2]는 제품기호 E, D, P가 [B8:D8]에 가로 방향으로 놓이고 그 아래 [B9:D9]에 판매단가 850,000 / 120,000 / 650,000 이 들어 있다. 찾을 값이 표의 첫 행에 있으므로 가로로 검색하는 HLOOKUP 을 써야 하며, 세로로 검색하는 VLOOKUP은 이 표에 맞지 않는다.
제품코드 'P-3456'에서 기호 한 글자만 떼어내려면 왼쪽에서 잘라내는 LEFT(A3,1) 을 쓴다. MID는 MID(문자열, 시작위치, 개수) 처럼 인수가 세 개여야 해서 MID(A3,1) 형태로는 쓸 수 없다.
따라서 수식은 =HLOOKUP(LEFT(A3,1),$B$8:$D$9,2,0)*C3 이다. 단가표 범위를 절대 참조로 고정해야 아래로 채우기해도 참조가 밀리지 않고, 행 번호 2는 단가가 있는 둘째 행, 마지막 0은 정확히 일치하는 값을 찾으라는 뜻이다.
실제로 P의 단가 650,000에 판매수량 7을 곱하면 [D3]의 4,550,000, D는 120,000×6=720,000, E는 850,000×3=2,550,000 으로 시트의 값과 모두 맞는다.

그림은 [B1:B3]에 오름세, 보합세, 내림세가 차례로 입력된 상태에서 아래쪽 [B4] 셀에 같은 열의 문자열들이 목록으로 펼쳐진 장면이다. 목록에는 내림세, 보합세, 오름세가 가나다순으로 나열되고 그중 하나가 선택되어 있다.
같은 열에 이미 입력해 둔 문자열을 목록으로 불러와 고르는 기능이 선택 목록이며, 단축키는 Alt+↓ 다. 마우스 오른쪽 단추 메뉴의 [드롭다운 목록에서 선택]과 같은 기능이다.
이 기능은 연속으로 붙어 있는 셀의 문자열만 목록에 올려 주며, 숫자나 날짜는 나타나지 않고 중간에 빈 셀이 있으면 그 위쪽 값은 목록에서 빠진다. Ctrl+↓ 는 데이터가 있는 마지막 셀로 이동하고, Shift+↓ 는 아래쪽으로 범위를 확장해 선택하므로 목록이 표시되지 않는다.
'DB' 과목을 수강한 학생의 이름과 점수를 검색하시오.
질의는 'DB' 과목을 수강한 학생의 이름과 점수를 구하는 것이다. 이름은 학생 테이블에, 점수와 과목명은 성적 테이블에 있으므로 두 테이블을 학번으로 연결(조인)한 뒤 과목명이 'DB'인 행만 걸러야 한다.
따라서 학생 INNER JOIN 성적 ON 학생.학번 = 성적.학번 으로 학번이 같은 행끼리 짝지은 다음 WHERE 과목명 IN ('DB') 조건을 적용한 문장이 옳다. IN 은 괄호 안 목록 중 하나와 같은지 비교하는 연산자로, 값이 하나뿐이면 과목명 = 'DB' 와 같은 뜻이다.
조인 조건 없이 두 테이블 이름만 나열하면 모든 행이 서로 곱해지는 교차 조인이 되어 다른 학생의 점수까지 섞여 나오고, 학번이 같다는 조건과 과목명 조건을 OR 로 묶으면 둘 중 하나만 만족해도 뽑히므로 엉뚱한 행이 포함된다. 또 하위 질의로 학번만 걸러 낸 뒤 학생 테이블만 조회하면 점수가 학생 테이블에 없어 결과에 표시할 수 없다.
강제로 원하는 위치에서 페이지를 나누려면 보고서 디자인 보기에서 해당 위치에 페이지 나누기 컨트롤을 삽입하면 된다. 이는 액세스 보고서에서 실제로 사용하는 방법이다.
[Page]와 [Pages]를 슬래시(/)로 연결한 식은 텍스트 결합이 아니라 나눗셈 연산이므로, 현재 페이지 1과 전체 페이지 5를 나눈 값이 결과가 되어 "1/5페이지"라는 문자열이 만들어지지 않는다.
Format([Pages], "000")은 전체 페이지 수인 5를 세 자리로 표시하므로 결과는 001이 아니라 005가 되어야 한다. 또한 모든 페이지 하단에 반복적으로 페이지 번호를 출력하려면 보고서 바닥글이 아니라 페이지 바닥글을 이용해야 한다.

보고서는 제품번호별로 그룹화되어 있다. 네모 상자 안에는 제품번호 GE955, 제품명 설탕통, 분류번호 20, 재고량 100 처럼 한 제품당 한 번만 나오는 정보가 들어 있고, 그 아래로 거래일·수주량·제품단가·판매단가·예상이익이 여러 줄 반복된다.
같은 모양의 상자가 다음 제품번호 GL355 그룹이 시작될 때 다시 한 번 나타나므로, 이 정보는 그룹이 바뀔 때마다 한 번씩 출력되는 자리에 놓여야 한다. 그 영역이 바로 그룹 머리글인 제품번호 머리글이다.
보고서 머리글은 보고서 전체에서 처음에 한 번만, 페이지 머리글은 매 페이지 위쪽에 반복 출력되므로 특정 제품에만 해당하는 값을 담을 수 없다. 본문은 레코드마다 한 줄씩 반복되는 영역이라 거래일과 수주량 같은 거래 내역 한 줄 한 줄이 들어가는 자리다.

출력된 보고서를 보면 도서분류 값이 '가정과 생활' → '문학' → '비즈니스와…' 순으로 묶여 있고, 같은 분류 안에서는 분류명이 맨 윗줄에 한 번만 찍혀 있다. 이는 도서분류를 1차 그룹 기준으로 지정하고, 그 컨트롤의 중복 내용 숨기기 속성을 '예'로 설정했을 때 나타나는 모습이다.
또 '가정과 생활' 묶음(결혼준비 따라잡기, 와인(A914))이 끝난 자리와 '문학' 묶음(오만과 편견~칼의 노래)이 끝난 자리마다 점선이 반복해서 그어져 있다. 그룹이 바뀔 때마다 한 번씩 출력되는 영역은 도서분류 바닥글이므로, 여기에 점선 모양의 선 컨트롤을 배치한 결과로 볼 수 있다.
문제가 되는 것은 '도서분류·도서명·저자·대출일·연체료'라는 필드 이름 레이블과 그 아래 실선이다. 이 레이블들이 도서분류 머리글에 있었다면 그룹이 바뀔 때마다(문학 위, 비즈니스와… 위) 다시 출력되어야 하는데, 화면에서는 페이지 맨 위 '대출내역' 제목 아래 딱 한 번만 나타난다. 전체 5페이지 중 2번째 페이지인데도 이 제목과 열 이름이 찍혀 있다는 점까지 함께 보면, 이 영역은 매 페이지 위쪽에 인쇄되는 페이지 머리글에 작성된 것이다.

'대출입력' 폼에는 학번 200708014, 200708023, 200806012 세 개의 레코드가 한 화면에 나란히 표시되어 있다. 한 번에 한 레코드만 보여 주는 단일 폼과 달리 여러 레코드를 이어서 보여 주므로 기본 보기 속성은 '연속 폼'으로 설정된 상태다. 또 각 레코드 사이에 가로 구분선이 그어져 있어 구분선 속성도 '예'로 설정되어 있다.
폼 왼쪽 끝에는 좁은 세로 막대가 있고 첫 번째 레코드(200708014) 자리에 ▶ 표시가 찍혀 있다. 이것이 바로 현재 레코드를 나타내는 레코드 선택기이며, 화면에 보이고 있으므로 이 속성은 '아니오'가 아니라 '예'로 설정된 것이다. 따라서 레코드 선택기를 '아니오'로 설정했다는 설명은 화면과 맞지 않는다.
반면 폼 아래쪽에는 '대출건수: 29권'만 있을 뿐 '레코드 1/29'과 같은 이동 화살표 단추가 전혀 없다. 이는 탐색 단추 속성을 '아니오'로 설정해 숨긴 결과다.
Sum = 0
n = 1
Do Until n >= 5
Sum = Sum + n
n = n + 2
Loop
제시된 코드는 Do Until … Loop 구조로, 조건 n >= 5 가 참이 되면 반복을 끝낸다. 즉 n이 5보다 작은 동안에만 반복문 안이 실행된다. 시작값은 Sum = 0, n = 1이며 반복할 때마다 Sum에 n을 더하고 n을 2씩 증가시킨다.
단계별로 따라가 보면, 첫 번째 반복에서 n = 1이므로 Sum = 0 + 1 = 1이 되고 n은 3이 된다. n = 3은 아직 5보다 작으므로 두 번째 반복이 실행되어 Sum = 1 + 3 = 4가 되고 n은 5가 된다. 이제 n = 5로 조건 n >= 5가 만족되므로 반복이 끝난다.
따라서 더해진 값은 홀수 1과 3뿐이며 최종 Sum은 4이다. n = 5일 때 한 번 더 더해질 것으로 착각하면 9가 나오는데, Do Until은 반복문 앞에서 조건을 검사하므로 n이 5가 된 순간 본문은 실행되지 않는다는 점이 핵심이다.
기본 키가 아닌 필드에서 값이 중복 입력되지 않도록 하려면 해당 필드에 중복 불가능(Unique) 인덱스를 설정하는 것이 가장 바람직하다.
입력 마스크는 데이터 입력 형식을 지정하는 기능이고, 유효성 검사 규칙은 값의 범위나 조건을 검사하는 기능이며, 빈 문자열 허용은 길이가 0인 문자열의 허용 여부를 지정하는 속성으로, 모두 중복 방지와는 직접적인 관련이 없다.

그림은 '급여조회' 폼의 디자인 보기이며, 위에서부터 폼 머리글(제목 '급여조회', 조회부서코드 콤보 상자, 조회·보고서보기 단추, 사번·이름·기본급·자격수당·기타수당·세금·실수령액 레이블), 본문(같은 이름의 텍스트 상자들과 =[기본급]+[… 계산식), 폼 바닥글(인원: =Count(*) & "명") 구역으로 나뉘어 있다.
(1)이 가리키는 곳은 가로 눈금자와 세로 눈금자가 만나는 왼쪽 위 모서리의 작은 사각형, 즉 폼 선택기다. 여기를 더블클릭하면 폼 전체의 속성 창이 열린다. (2)가 가리키는 것은 본문 구역 옆의 세로 눈금자로, 이 부분을 클릭하면 그 높이에 걸친 본문의 컨트롤들이 한꺼번에 선택된다.
반면 (3)은 폼 바닥글 구역 아래쪽의 짙은 회색 영역이다. 이곳은 어떤 구역에도 속하지 않는 폼 바깥 여백이므로 더블클릭해도 폼 바닥글의 속성 창이 열리지 않아 배경색을 바꿀 수 없다. 폼 바닥글의 배경색을 바꾸려면 '폼 바닥글' 구역 선택기(구역 표시줄)나 구역 안의 빈 곳을 더블클릭해 속성 창을 연 뒤 배경색을 지정해야 한다.
참고로 사번·이름·기본급처럼 같은 형식의 레코드가 여러 건 나열되는 조회용 폼은 연속 폼으로 두는 것이 적절하다.
보고서 페이지 설정의 열 레이아웃은 여러 열로 구성된 보고서에서 레코드를 배치하는 순서를 지정하는 항목으로, 실제로 제공되는 옵션은 열 우선과 행 우선 두 가지뿐이며 '사용자 지정' 옵션은 존재하지 않는다.
열 크기의 '본문과 같게' 옵션이 열의 너비·높이를 보고서 본문에 맞춘다는 설명, '데이터만 인쇄' 옵션이 눈금선이나 그래픽 개체의 표시 여부를 지정한다는 설명, 인쇄 용지의 크기와 방향을 지정할 수 있다는 설명은 모두 페이지 설정의 실제 기능과 일치한다.
SELECT 이름, 나이, 급여
FROM 사원
WHERE 부서='영업부' OR 부서='총무부'
ORDER BY 나이 ASC;
제시된 질의는 [사원] 테이블에서 이름·나이·급여 세 필드를 가져오되, WHERE 절로 부서='영업부' OR 부서='총무부' 인 행만 걸러내고 ORDER BY 나이 ASC 로 정렬한다.
같은 필드를 여러 값과 OR로 비교하는 조건은 IN 연산자로 바꿔 쓸 수 있다. 즉 WHERE 부서 IN ('영업부', '총무부') 로 지정해도 완전히 같은 결과가 나오며, 조건이 늘어날수록 IN 쪽이 간결하다.
나머지 설명이 틀린 이유도 정리해 두자. ASC는 오름차순이고 정렬 방식을 생략하면 기본값이 ASC이므로, 결과는 나이가 적은 사람부터 나온다. 내림차순으로 정렬하려면 DESC를 써야 한다. 또 이 조건은 영업부와 총무부를 포함하는 것이지 제외하는 것이 아니다. 제외하려면 NOT IN 이나 부서<>'영업부' AND 부서<>'총무부' 처럼 지정해야 한다.
필드에 입력 가능한 조건을 미리 정의해 두고 데이터가 입력될 때마다 이를 검사하도록 하는 기능은 유효성 검사 규칙이다.
기본값은 새 레코드 입력 시 자동으로 채워지는 값을 지정하는 속성이고, 필수 여부는 Null 값 허용 여부를, 빈 문자열 허용은 길이가 0인 문자열의 허용 여부를 지정하는 속성으로, 값의 조건을 검사하는 기능과는 성격이 다르다.
보고서는 인쇄나 화면 표시를 목적으로 하는 읽기 전용 개체이므로, 텍스트 상자나 콤보 상자 같은 컨트롤을 두더라도 이를 통해 원본 테이블의 데이터를 직접 수정할 수는 없다.
데이터가 바뀌면 동일한 보고서를 다시 출력할 수 있다는 점, 외부 데이터를 연결한 테이블로도 보고서를 작성할 수 있다는 점, '데이터만 인쇄' 옵션을 이용해 서식이 미리 인쇄된 양식지에 출력할 수 있다는 점은 모두 액세스 보고서의 실제 기능과 일치한다.
데이터베이스를 사용하면 무결성 제약 조건과 참조 규칙을 통해 데이터의 일관성과 무결성을 유지할 수 있다는 점이 대표적인 장점이다.
반면 데이터베이스는 데이터 간의 종속성을 줄이고 중복을 최소화하는 것을 지향하므로, 종속성을 유지한다거나 중복 관리를 장점으로 든 설명은 실제 특성과 반대이다. 또한 전용 시스템 도입과 전문 인력 운영이 필요해 관리 비용은 오히려 늘어나는 편이므로 비용 절감도 장점으로 보기 어렵다.
액세스에서 폼 개체는 HTML 문서, Microsoft Excel 파일, 서식 있는 텍스트(RTF) 파일 등으로 내보낼 수 있지만, BMP나 JPG 같은 그림 파일 형식으로는 내보낼 수 없다.
기본 키로 지정된 필드는 값이 비어 있는 것을 허용하지 않는다. 그런데 '도서번호'는 입력되지 않는 경우도 있다고 전제되어 있으므로, 이 필드를 기본 키로 설정하는 것은 적절하지 않다.
반대로 항상 값이 입력되는 '도서명'에 '필수' 속성을 지정하는 것, 외래 키인 '출판사코드'를 참조 필드와 데이터 형식을 일치시키는 것, '대여료'를 숫자나 통화 형식으로 지정하는 것은 모두 올바른 필드 설계이다.

중복된 학번을 가진 학생의 정보 전체를 찾으려면 두 단계가 필요하다. 먼저 학번별로 묶어서 건수가 2건 이상인 학번을 추려내고, 그 학번에 해당하는 행을 [학생] 테이블에서 다시 꺼내 오는 것이다.
이때 그룹으로 묶는 기준은 GROUP BY 학번 이고, 묶은 결과에 조건을 거는 절은 WHERE가 아니라 HAVING 이다. 따라서 하위 질의를 select 학번 from 학생 group by 학번 having count(*)>1 로 작성한 뒤, 바깥 질의에서 select * from 학생 where 학번 in (…) 으로 감싸는 형태가 맞다.
다른 방식이 안 되는 이유는 이렇다. group by 뒤에는 그룹 기준이 될 필드가 와야 하므로 group by count(*)>1 같은 표현은 성립하지 않는다. 또 group by 학번 having count(*)>1 만 쓰고 select * 를 하면 결과가 학번 단위로 요약되어 개별 학생의 나머지 필드 값을 그대로 볼 수 없다. 그리고 SQL의 절 순서는 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY 이므로 having을 where보다 앞에 쓰면 구문 오류가 난다.
액세스의 매크로는 제공되는 매크로 함수를 선택해 직접 구성하는 방식으로 작성하며, 엑셀처럼 사용자의 조작을 그대로 녹화해 자동으로 매크로를 기록해 주는 기능은 제공하지 않는다.
데이터베이스 파일을 열 때 매크로가 자동 실행되도록 이름을 AutoExec로 지정하는 것이나, 매크로 이름 열에 지정한 바로 가기 키로 매크로를 실행하는 것은 실제로 지원되는 기능이다.
BETWEEN A AND B 조건은 두 경계값을 모두 포함하는 범위를 의미하므로, "번호 BETWEEN 1 AND 3"이라고 하면 1과 3이 모두 검색 결과에 포함된다.
IN 연산이 여러 값에 대한 OR 조건과 같다는 설명, BETWEEN 연산이 두 개의 비교식을 AND로 묶은 것과 같다는 설명, LIKE 연산자로 특정 문자로 시작하는 값을 검색할 수 있다는 설명은 모두 옳다.
SELECT 문에서 조회 결과 중 중복되는 행을 한 번만 표시하려면 DISTINCT 키워드를 사용한다.
UNIQUE나 ONLY는 이런 용도로 쓰이는 SQL 예약어가 아니며, 별표(*)는 모든 필드를 선택할 때 사용하는 기호일 뿐 중복 제거와는 관련이 없다.
대괄호 안에 느낌표를 붙인 만능 문자 패턴 [!문자목록]은 목록에 포함된 문자를 제외한 한 글자를 의미한다. 따라서 "소[!비유]자"는 '비'와 '유'가 아닌 글자가 가운데 오는 값을 찾는 패턴이므로, '비'가 포함된 '소비자'는 검색 결과에 나오면 안 되는데 이를 검색된다고 설명한 것이 옳지 않다.
숫자 한 자리를 나타내는 #, 문자 한 자리를 나타내는 ?, 지정한 범위의 문자 하나를 나타내는 [a-c]를 이용한 나머지 예시들은 모두 올바른 설명이다.