반응형
- 시험 중 수시로 저장하기
- 시험 중에 막히면 과감히 포기하고 다음 문제부터 풀기
- 단축키를 활용하여 시간 조금이라도 줄이기
- 특정 단축키가 동작하지 않는다면, 자판 배열이 Micorosoft 입력기로 설정되어 있는지 확인
- 기본 작업 -
< 사용자 지정 서식 >
- 셀 서식 단축키 : [Ctrl] + [1]
사용자 지정 표시 형식
(양수);(음수);(0);(문자) // 일반적인(조건을 지정하지 않을) 경우
[(색상1)][(조건1)](서식1);[(색상2)][(조건2)](서식2);[(색상3)](서식3) // 조건을 지정할 경우
- 조건을 지정할 경우 최대 2개까지 지정 가능
- 조건1부터 순차적으로 판단하며, 조건1과 조건2를 만족하지 않을 경우 (서식3)으로 표시
숫자/문자 서식
구분 | 12345678의 표시 예 | 서식 |
숫자 | 12,345,678 | #,##0 |
12,345 | #,##0, | |
12 | #,##0,, | |
12345678.0 | 0.0 | |
12,345,678.0 | #,##0.0 | |
12,345,678. | #,##0.# |
구분 | "홍길동"의 표시 예 | 서식 |
문자 |
홍길동님 | @"님" |
홍길동 님 ("홍길동"은 가장 왼쪽에, "님"은 셀을 가득 채울 때까지 " "으로 채워진 후 가장 오른쪽에 표시) |
@* "님" |
날짜 서식
구분 | "2025-02-05-수요일"의 표시 예 | 서식 |
년 | 2025 | yyyy |
25 | yy | |
월 | Februrary | mmmm |
Feb | mmm | |
02 | mm | |
2 | m | |
일 | 05 | dd |
5 | d | |
요일 | Wednesday | dddd |
Wed | ddd | |
수요일 | aaaa | |
수 | aaa |
시간 서식
구분 | "오전 6시 7분 3초"의 표시 예 | 서식 |
시간 | 06 | hh |
6 | h | |
분 | 07 | nn |
7 | n | |
초 | 03 | ss |
3 | s | |
오전/오후 | 오전 또는 오후 (시간은 12시간제로 표시) |
am/pm |
< 고급 필터 >
- 같은 행에 조건을 입력하면 AND 연산
- 다른 행에 조건을 입력하면 OR 연산
- 여러 개의 필드를 사용하는 조건을 입력할 때, 원본 데이터의 필드명과 다른 필드명을 사용
- *, ?와 같은 와일드 카드 문자 사용 가능
- 원본 데이터의 필드명 셀을 직접 복사해서 조건 셀 및 복사 셀 작성
- 계산 작업 -
< 셀 참조 >
- 한 필드 내 여러 개의 수식을 작성할 때, 자동 채우기와 함께 사용하여 시간을 효율적으로 단축할 수 있는 기능
- 참조 변환 키 : [F4]
구분 | [A1] 셀에 대한 표시 예 | 설명 |
상대 참조 | A1 | 입력한 셀을 이동시키면 이동시킨 같은 행, 열만큼 이동된 셀로 변경됨 |
절대 참조 | $A$1 | 입력한 셀을 이동시켜도 항상 같은 셀을 가르킴 |
혼합 참조 | A$1 | 입력한 셀을 이동시키면 이동시킨 같은 행만큼 이동된 셀로 변경되고 열은 고정됨 |
$A1 | 입력한 셀을 이동시키면 이동시킨 같은 열만큼 이동된 셀로 변경되고 행은 고정됨 |
< 연산자 >
- 수식에서만 사용 가능하고, Viusal Basic에서는 안 되는 것(% 등)도 있음
구분 | 표시 | 설명 |
산술 연산자 | + | 더하기 |
- | 빼기 | |
* | 곱하기 | |
/ | 나누기 | |
% | 백분율 (/100과 같음) | |
^ | 거듭제곱 | |
논리 연산자 | > | 크다 (초과) |
>= | 크거나 같다 (이상) | |
< | 작다 (미만) | |
<= | 작거나 같다 (이하) | |
= | 같다 | |
<> | 같지 않다 | |
문자열 결합 연산자 | & | 여러 문자, 숫자, 수식을 연결한 하나의 텍스트로 표시 |
< 논리 함수 >
함수 | 설명 |
AND(logical1, ...) | logicalN들을 모두 만족하면 TRUE를, 그렇지 않으면 FALSE를 반환 |
OR(logical1, ...) | logicalN 중 하나라도 만족하면 TRUE를, 그렇지 않으면 FALSE를 반환 |
NOT(logical) | logical의 반대 논리값을 반환 |
IF(logical, value_if_true, value_if_false) | logical이 TRUE라면 value_if_true을, 그렇지 않으면 value_if_false를 반환 |
IFS(logical1, value_if_true1, ...) | logicalN이 TRUE라면 value_if_trueN을 반환 |
IFERROR(value, value_if_error) | value가 오류 값이라면 value_if_error를 반환 |
SWITCH(expression, value1, result1, default_or_value2, ...) | expression이 valueN이라면 resultN을 반환, valueN 중 해당하는 값이 없으면 default를 반환 (valueN과 resultN 두 개씩 짝지어서 작성, 하나만 작성하면 default로 인식) |
< 정보 함수 >
함수 | 설명 |
ISBLANK(value) | value가 비어 있으면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISERR(value) | value가 오류라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISERROR(value) | value가 #N/A를 제외한 오류라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISEVEN(value) |
value가 짝수라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISODD(value) | value가 홀수라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISLOGICAL(value) |
value가 논리값이라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISTEXT(value) | value가 문자라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISNONTEXT(value) | value가 문자가 아니라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
ISNUMBER(value) | value가 숫자라면 TRUE를, 그렇지 않으면 FALSE를 반환 |
TYPE(value) | value가 숫자라면 1, 문자라면 2, 논리값이라면 4를 반환 |
< 계산/통계 함수 >
함수 | 설명 |
INT(number) | number를 가장 가까운 정수로 반환 |
ABS(number) | number의 절대값을 반환 |
MOD(number, divisor) | number를 divisor로 나눈 나머지를 반환 |
QUOTIENT(number, denominator) | number를 denominator로 나눈 몫을 반환 |
ROUND(number, num_digits) ROUNDDOWN(number, num_digits) ROUNDUP(number, num_digits) |
number를 자리수까지 반올림/내림/올림하여 반환 |
TRUNC(number, num_digits) | number의 num_digits 자릿수 미만을 버린 값을 반환 |
SUMPRODUCT(array1, ...) | arrayN들의 행렬 곱을 반환 |
SUM(number1, ...) | numberN들의 합계를 반환 |
SUMIF(range, criteria, sum_range) | range에서 criteria를 만족하는 상대 위치를 sum_range에 적용하여 합계를 반환 |
SUMIFS(sum_range, range1, criteria1, ...) | rangeN에서 criteriaN을 모두 만족하는 상대 위치를 sum_range에 적용하여 합계를 반환 |
COUNT(value1, ...) | valueN 중에 숫자가 있는 셀의 개수를 반환 |
COUNTA(value1, ...) | valueN 중에 비어있지 않은 셀의 개수를 반환 |
COUNTBLANK(range) | range에서 비어있는 셀의 개수를 반환 |
COUNTIF(range, criteria) | range에서 criteria를 만족하는 셀의 개수를 반환 |
COUNTIFS(range1, criteria1, ...) | rangeN에서 criteriaN을 모두 만족하는 셀의 개수를 반환 |
AVERAGE(number1, ...) | numberN들의 평균을 반환 |
AVERAGEA(value1, ...) | valueN들의 평균을 반환 (숫자가 아닌 셀도 숫자로 치환하여 계산) |
AVERAGEIF(range, criteria, average_range) | range에서 criteria를 만족하는 상대 위치를 average_range에 적용하여 평균을 반환 |
AVERAGEIFS(average_range, range1, criteria1, ...) | rangeN에서 criteriaN을 모두 만족하는 상대 위치를 average_range에 적용하여 평균을 반환 |
MAX(number1, ...) | numberN들의 최대값을 반환 |
MAXA(value1, ...) | valueN들의 최대값을 반환 (숫자가 아닌 셀도 숫자로 치환하여 계산) |
MIN(number1, ...) | numberN들의 최소값을 반환 |
MINA(value1, ...) | valueN들의 최소값을 반환 (숫자가 아닌 셀도 숫자로 치환하여 계산) |
MEDIAN(number1, ...) | numberN들의 중간값을 반환 |
LARGE(array, k) | array에서 k번째로 큰 값을 반환 |
SMALL(array, k) | array에서 k번째로 작은 값을 반환 |
MODE.SGNL(number1, ...) | numberN 중 가장 빈도가 높은 값을 반환 |
★ FREQUENCY(data_array, bins_array) |
data_array에서 나타나는 값의 빈도를 bins_array에 따라 구간 별로 나누어 구한 배열을 반환 (data_array : 빈도를 구할 실제 데이터 범위) (bins_array : 구할 빈도가 나타난 표 헤더) <반드시 값 적용 전, 표시할 범위를 모두 선택한 후 배열 수식으로 적용해야 함> |
RANK.EQ(number, ref, order) | ref 중에서 number의 백분위수를 반환 (order: 0 또는 생략일때, 내림차순(순위가 높을수록 큼) 1일때, 오름차순(순위가 낮을수록 작음)) |
STDEV.S(number1, ...) | numberN들의 표준편차를 반환 |
VAR.S (number1, ...) | numberN들의 분산을 반환 |
< 문자 함수 >
- 문자열의 첫번째 인덱스는 1부터 시작함
함수 | 설명 |
LEFT(text, num_chars) | text의 왼쪽부터 num_chars만큼의 문자열을 반환 |
RIGHT(text, num_chars) | text의 오른쪽부터 num_chars만큼의 문자열을 반환 |
MID(text, start_num, num_chars) | text의 start_num부터 num_chars만큼의 문자열을 반환 |
LOWER(text) | text를 모두 영소문자로 치환한 문자열을 반환 |
UPPER(text) | text를 모두 영소문자로 치환한 문자열을 반환 |
PROPER(text) | text에서 단어의 첫문자를 영대문자, 나머지는 영소문자로 치환한 문자열을 반환 |
LEN(text) | text의 문자수를 반환 |
FIND(find_text, within_text) | within_text에서 find_text를 찾아 인덱스를 반환 (대소문자 구분, 와일드카드 문자 사용 불가) |
SEARCH(find_text, within_text) | within_text에서 find_text를 찾아 인덱스를 반환 (대소문자 구분안함, 와일드카드 문자 사용 가능) |
★ SUBSTITUTE(text, old_text, new_text) | text에서 old_text를 찾아 new_text로 치환한 문자열을 반환 |
★ REPLACE(old_text, start_num, num_chars, new_text) | old_text에서 인덱스 start_num인 문자부터 num_chars만큼의 문자열을 new_text로 치환한 문자열을 반환 |
FIXED(number, decimal, no_commas) | number를 소수점 자리수 decimal까지 표시하고 no_commas에 따라 천만 단위 표시 기호(,)를 표시한 숫자를 문자열로 치환하여 반환 |
VALUE(text) | 숫자로 작성된 문자열 text를 숫자로 치환하여 반환 |
★ REPT(text, number_times) | text를 number_times만큼 반복한 문자열을 반환 |
★ CONCAT(text1, ...) | textN들을 하나로 묶은 문자열을 반환 |
< 날짜/시간 함수 >
- 날짜/시간의 serial_number에서 정수 부분은 날짜를, 소수점 이하 부분은 시간을 의미함
함수 | 설명 |
NOW() | 현재 날짜와 시간을 반환 |
TODAY() | 현재 날짜를 반환 |
DATE(year, month, day) | year년 month월 day일의 serial_number로 변환하여 반환 |
YEAR(serial_number) | serial_number가 의미하는 날짜의 년도를 반환 |
MONTH(serial_number) | serial_number가 의미하는 날짜의 월을 반환 |
DAY(serial_number) |
serial_number가 의미하는 날짜의 일을 반환 |
TIME(hour, minute, second) | hour시 minute분 second초의 serial_number로 변환하여 반환 |
HOUR(serial_number) | serial_number가 의미하는 시간의 시를 반환 |
MINUTE(serial_number) | serial_number가 의미하는 시간의 분을 반환 |
SECOND(serial_number) | serial_number가 의미하는 시간의 초를 반환 |
★ WEEKDAY(serial_number, return_type) | serial_number가 의미하는 날짜의 요일 번호를 반환 (return_type : 1 또는 생략일 경우 일요일이 1부터 시작, 2일 경우 월요일이 1부터 시작, 3일 경우 월요일이 0부터 시작) |
DAYS(end_date, start_date) | start_date부터 end_date까지의 일수를 반환 |
NETWORKDAYS(start_date, end_date, [holidays]) | start_date부터 end_date까지의 holidays를 제외한 일수를 반환 |
EDATE(start_date, month) | start_date부터 month개월 후의 serial_number를 반환 |
WORKDAY(start_date, days, [holidays]) | start_date부터 holidays를 제외한 days일 후의 serial_number를 반환 |
< 데이터베이스 함수 >
- 데이터베이스 함수의 매개변수는 항상 database, field, criteria임
- database에는 표의 모든 범위를 지정
- field에는 값을 구할 필드명을 지정
- criteria에는 추가 조건을 지정
함수 | 설명 |
DSUM(database, field, criteria) | 표에서 조건에 맞는 값의 합계를 반환 |
DCOUNT(database, field, criteria) | 표에서 조건에 맞고, 비어있지 않은 값의 개수를 반환 |
DAVERAGE(database, field, criteria) | 표에서 조건에 맞는 값의 평균을 반환 |
DMAX(database, field, criteria) | 표에서 조건에 맞는 값의 최대값을 반환 |
DMIN(database, field, criteria) | 표에서 조건에 맞는 값의 최소값을 반환 |
< ★ 찾기/참조 함수 ★ >
함수 | 설명 |
CHOOSE(index_num, value1, ...) | index_num이 N일때, valueN 값을 반환 |
★ LOOKUP(lookup_value, lookup_vector, result_vector) | lookup_vector에서 lookup_value의 상대 위치를 result_vector에 적용한 값을 반환 |
★ XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) | lookup_array에서 검색 모드에 따라 찾은 lookup_value의 상대 위치를 return_array에 적용한 값을 반환 (만약 값을 찾지 못했다면, if_not_found를 반환) |
★HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup]) | table_array 범위의 첫번째 행에서 lookup_value의 상대 위치의 열과 row_index_num 행에 해당하는 값을 table_array에서 찾아 반환 (row_index_num는 적어도 2부터 시작해야 함) |
★VLOOKUP(lookup_value, table_array, column_index_num, [range_lookup]) | table_array 범위의 첫번째 행에서 lookup_value의 상대 위치의 행과 column_index_num 열에 해당하는 값을 table_array에서 찾아 반환 (column_index_num 는 적어도 2부터 시작해야 함) |
★ OFFSET(reference, rows, cols, [height], [width]) | reference에서 rows행, cols열만큼 이동시키고 height, width 크기로 변환한 배열을 반환 (height, width를 지정하지 않으면 reference의 크기로 설정됨) |
★ INDEX(array, row_num, col_num) | array 내에서 상대 위치 row_num행, col_num열에 해당하는 값을 반환 |
★ MATCH(lookup_value, lookup_array, [match_type]) | lookup_array에서 lookup_value의 상대 위치 값을 반환 |
★ XMATCH(lookup_value, lookup_array, [match_type], [search_mode]) | lookup_array에서 lookup_value의 상대 위치 값을 반환 (MATCH와 검색 방법 및 검색 방향 지정 방식이 다름) |
< 재무 함수 >
- 이자율과 기간은 년이 아닌 월을 기준으로 계산함
- 연 3% 이자율일 경우 3%/12로 계산
- 2년간 납입일 경우 2*12로 계산
함수 | 설명 |
FV(rate, nper, pmt, [pv], [type]) | 월 rate의 이자율을 기반으로 미래 가치를 계산한 결과를 반환 (type : 납입 시점, 0 또는 생략일 경우 기간 말, 1일 경우 기간 초로 계산) |
PV(rate, nper, pmt, [fv], [type]) | 월 rate의 이자율을 기반으로 현재 가치를 계산한 결과를 반환 (type : 납입 시점, 0 또는 생략일 경우 기간 말, 1일 경우 기간 초로 계산) |
PMT(rate, nper, pv, [fv], [type]) | nper만큼의 금액을 납입하고 월 rate의 이자율이 적용되는 대출 상환금을 계산한 결과를 반환 (type : 납입 시점, 0 또는 생략일 경우 기간 말, 1일 경우 기간 초로 계산) |
<★ 배열 수식 ★>
- 수식 작성 후 [Ctrl]+[Shift]+[Enter]
- AND 조건은 *를, OR 조건은 +를 사용
- 조건이 TRUE면 1, FALSE면 0이 되기 때문
- 조건을 작성시 셀을 참조할 때 하나의 셀이 아닌 여러 셀을 참조할 것
구분 | 수식 | 설명 |
개수 | { =SUM((조건)*1) } | 조건을 만족하면 1을 더하여, 즉 조건을 만족하는 셀의 개수를 구함 |
{ =SUM(IF(조건,1)) } | ||
{ =COUNT(IF(조건,1)) } | ||
합계 | { =SUM((조건)*(범위)) } | 조건을 만족하는 합계 범위에 해당하는 값을 모두 더한 합계를 구함 |
{ =SUM(IF((조건, 범위)) } | ||
최대 | { =MAX((조건)*(범위)) } | 조건을 만족하는 값에서 최대값을 구함 |
{ =MAX(IF((조건, 범위)) } | ||
최소 | { =MIN((조건)*(범위)) } | 조건을 만족하는 값에서 최소값을 구함 |
{ =MIN(IF((조건, 범위)) } |
<★ 사용자 정의 함수 ★>
- 코드에서 영대소문자를 구분하지 않음
IF 문
If 조건식1 Then
ElseIf 조건식2 Then
Else
End If
SELECT 문
Select Case 식또는변수
Case Is 초기값 To 종료값
Case Is 조건식
Case 값
Case Else
Select End
FOR 문
For 변수=초기값 To 종료값 [Step 증가값]
Next 변수
- 분석 작업 -
< 피벗 테이블 >
- 외부 데이터의 확장자를 먼저 확인하고 [외부 데이터 가져오기] 메뉴 선택하기
- 외부 데이터에서 가져올 열 확인하기
- 표시된 결과 화면과 최대한 비슷하게 작성하기
- 필드 이름 변경 여부 확인하기
< 데이터 유효성 검사 >
- 표시된 결과 화면만 보고 작성할 수 있도록 연습하기
- 보통 [결과], [설명 메시지], [오류 메시지]가 세트이니 유의하기
< 정렬 및 부분합 >
- 부분합 작업 전에는 항상 정렬을 우선으로 하기 (부분합 문제는 부분합 문제 내에 정렬 조건이 표시되어 순서에 유의해야 함)
- (필드1)별 (필드2)의 (함수)를 구할 때, [그룹화할 항목]은 (필드1), [부분합 계산 항목]은 (필드2), [사용할 함수]는 (함수)를 선택
- 부분합을 2번 이상 지정할 때, 무조건 문제에 표시된 순서대로 진행하기
< 데이터 표 >
- 완성된 표의 결과 값으로 보이는 셀의 수식을 복사 및 붙여넣기 하거나 직접 채울 표의 왼쪽 상단의 비어있는 셀에 작성
- 데이터 표의 지정 영역은 행 및 열 레이블을 포함함
- 단일 데이터 표에서는 [행 입력 셀]이나 [열 입력 셀] 중 하나만 작성함
< 통합 >
- 통합 표를 작성할 영역의 행 및 열 레이블을 포함함
- 왼쪽 열에 이미 작성이 되어 있다면 [사용할 레이블]의 [첫 행]과 [왼쪽 열]을 모두 체크
- [왼쪽 열]을 이용하면 와일드 카드 문자를 사용하여 데이터를 통합할 수 있음
< 시나리오 >
- [변경 셀]에 대한 값을 변경할 때 절대 값이 아닌 상대 값이 주어지는 경우 현재 값에 대한 상대 값을 계산하여 작성할 것
- [결과 셀]을 입력할 때, 셀 영역으로 입력하지 말고 [Ctrl]과 함께 하나하나 선택할 것
- 작성 후, 시나리오 요약 보고서 시트가 원본 시트의 바로 왼쪽에 위치해 있는지 확인하기 (보통 바로 왼쪽에 생성됨)
- 기타 작업 -
< 차트 >
- 각 옵션이 어디에 위치해 있는지 확인하는 연습하기
- 축 단위의 표시 형식을 설정할 때, 2가지 방법 중 적절한 방법 선택
- [축 서식] > [축 옵션] > [표시 단위] 이용하기 (데이터 레이블에도 적용됨)
- [축 서식] > [표시 형식] 이용하기 (데이터 레이블에는 적용되지 않음)
< 매크로 >
- 기록이 모두 완료된 후, 반드시 [기록 중지]를 눌러 매크로 기록 종료하기
- 매크로 이름은 중복될 수 없으므로, 매크로 기록을 수정할 경우 같은 이름으로 기록하면 덮어쓸 수 있음
- 사용자 지정 표시 형식에 대한 매크로 문제일 경우, 매크로 기록 전에 미리 표시 형식 만들어 놓기
< 프로시저 >
- UserForm_Initialize에서는 콤보 상자 및 텍스트 상자의 값을 초기화
- 보통 폼 버튼, UserForm_Initialize, 메인 등록 버튼, 종료 버튼의 프로시저 작성이 세트이니 유의하기
With 문
With cmb상자
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
셀 참조
'A2 셀을 참조하는 방법'
[A2]
Cells(1, 2)
Range("A2")
'A1:B10 셀을 참조하는 방법'
Range("A1:B10")
셀 폰트
Range("A2").Font.Name = "궁서체"
Range("A2").Font.Bold = True
Range("A2").Font.Size = 10
콤보 상자
cmb상자.RowSource = "A1:B10" 'cmb상자가 표시하는 영역 설정'
cmb상자.ColumnCount = 2 'cmb상자가 표시하는 열의 수 설정'
cmb상자.Value = 123 'cmb상자가 표시하는 값'
cmb상자.ListIndex = 3 'cmb상자의 선택된 값의 인덱스(0부터 시작)'
cmb상자.List(cmb상자.ListIndex, 0) 'cmb상자의 선택된 행, 첫번째 열에 해당하는 값을 의미 ((0, 0)부터 시작)'
cmb상자.SetFocus 'cmb상자 컨트로에 포커스를 옮김'
텍스트 상자
txt상자.Value = 123 'txt상자가 표시하는 값(문자 형식)'
옵션 단추
opt단추.Value = True 'opt단추가 선택된 상태'
opt단추.Value = False 'opt단추가 선택 해제된 상태'
리스트 추가하기
'표가 A4부터 시작할 경우("[표1]"과 같은 표시 셀도 포함)'
i = Range("A4").CurrentRegion.Rows.Count + 4
Cells(i, 1) = ...
메시지 박스
MsgBox "프롬프트 텍스트", 버튼스타일 + 버튼선택, "제목 텍스트"
<버튼스타일>
vbOKOnly : 확인
vbOKCancel : 확인 + 취소
vbYesNo : 예 + 아니오
vbYesNoCancel : 예 + 아니오 + 취소
<버튼선택>
vbDefaultButton1 : 첫 번째 버튼이 선택된 상태
vbDefaultButton2 : 두 번째 버튼이 선택된 상태
폼 종료
Unload Me '현재 폼을 닫음'
반응형