컴활 기출에 실제로 나온 스프레드시트 함수와 풀이법
이 글이 쓰는 숫자의 기준
컴활 필기 스프레드시트 과목을 준비하다 보면 함수 목록이 끝없이 길어 보입니다. 교재에는 수십 개의 함수가 나오는데, 시험에 정말 자주 나오는 것은 그중 일부입니다. 이 글은 감이나 소문이 아니라 패스뱅크에 실린 기출 문제를 직접 세어 본 결과에서 출발합니다.
세는 방법은 단순합니다. 컴활 1급 스프레드시트 240문항(기출 11개 회차와 패스뱅크 자체 실전모의고사 1회분)과 2급 스프레드시트 360문항(기출 17개 회차와 자체 모의고사 1회분)에서, 함수 이름이 문제나 보기 텍스트에 등장한 문항 수를 셌습니다. 한 문항에 같은 함수가 여러 번 나와도 1로 셉니다. 수식이 그림으로만 실린 문항은 글자를 읽을 수 없어 세지 못했기 때문에, 아래 숫자는 최소값입니다. 실제 등장 횟수는 이보다 많을 수 있습니다.
정답률은 패스뱅크 회원 풀이 기록(2026년 3월 25일~10월 13일, 컴활 1급 4,187건, 2급 17,670건) 기준입니다. 단원은 문제 텍스트의 키워드로 자동 분류한 것이라 사람이 하나하나 나눈 분류와는 조금 다를 수 있습니다. 최신 수치는 컴활 1급 통계와 컴활 2급 통계 페이지에서 확인할 수 있습니다.
기출에 실제로 등장한 함수
| 순위 | 1급 (240문항) | 2급 (360문항) |
|---|---|---|
| 1 | SUM 10 | COUNTIF 11 |
| 2 | INDEX 7 | LEFT 9 / MID 9 |
| 3 | MATCH 6 / AVERAGE 6 | TRUNC 8 |
| 4 | LARGE 5 / MOD 5 | ROUND 7 |
| 5 | REPT 4 / REPLACE 4 / IF 4 / ROW 4 | AVERAGE 6 / VLOOKUP 6 |
| 6 | COLUMN 3 / OFFSET 3 / COUNT 3 | MOD 5 |
| 7 | FREQUENCY, PMT, QUOTIENT, TABLE, COUNTA, MAXA, MINA, SMALL, RANK, DAYS 각 2 | SUM, COLUMN, POWER, RANK.EQ 각 4 |
| 8 | — | INDEX, RIGHT, COUNT 각 3 |
표를 보면 두 급수의 성격이 꽤 다릅니다. 2급은 COUNTIF, 문자열 추출(LEFT·MID·RIGHT), 자릿수 처리(TRUNC·ROUND·ROUNDUP·ROUNDDOWN)처럼 하나의 함수가 무엇을 돌려주는지 정확히 아는지를 묻는 문항이 많습니다. 1급은 INDEX·MATCH·LARGE·OFFSET처럼 위치와 범위를 다루는 함수, FREQUENCY·TABLE처럼 배열이나 데이터 표와 엮이는 함수가 눈에 띕니다. 2급에서는 VLOOKUP이 6문항인데 1급에서는 상위권에 없고, 그 자리를 INDEX와 MATCH가 차지하고 있습니다.
많은 학습 글이 IF를 출제 1위로 꼽지만, 텍스트에 IF가 직접 등장한 문항은 1급 4개, 2급 2개였습니다. IF가 중요하지 않다는 뜻은 아닙니다. IF는 다른 함수 안에 섞여 수식 그림으로 출제되는 경우가 많아 텍스트 집계에서 빠졌을 가능성이 큽니다. 다만 IF 하나만 붙잡고 있으면 실제로 자주 나오는 자릿수 함수나 참조 함수를 놓칠 수 있다는 점은 분명합니다.
함수 단원의 정답률은 어느 정도일까
| 스프레드시트 단원 (자동 분류) | 1급 정답률 | 2급 정답률 |
|---|---|---|
| 함수·수식 | 59% (풀이 243) | 65% (풀이 1,352) |
| 데이터 관리·분석 | 68% (풀이 249) | 76% (풀이 1,817) |
| 서식·표시 형식 | 52% (풀이 124) | 63% (풀이 725) |
| 화면·시트·통합 문서 | 57% (풀이 184) | 69% (풀이 486) |
| 스프레드시트 과목 전체 | 61% | 69% |
함수·수식 단원은 1급에서 과목 평균보다 2%p, 2급에서 4%p 낮습니다. 문항 수로도 1급 49문항(과목의 20%), 2급 61문항(17%)으로 큰 단원입니다. 회차당으로 나누면 1급은 대략 4문항, 2급은 3~4문항이 함수 문제라는 계산이 나옵니다. 함께 볼 점은 서식·표시 형식 단원이 두 급수 모두에서 가장 낮다는 사실입니다. 사용자 지정 서식 문제는 함수 공부와 별도로 시간을 떼어 두어야 합니다.
2급에서 자주 나오는 함수: 결과값을 정확히 아는지 묻는다
자릿수 처리 4형제와 INT
2급 상위권에 TRUNC 8, ROUND 7, ROUNDUP·ROUNDDOWN 각 2가 있습니다. 네 함수 모두 두 번째 인수가 자릿수인데, 양수면 소수점 아래 자릿수, 0이면 정수, 음수면 정수 부분의 자릿수를 뜻합니다. ROUND(1234.567, -2)는 십의 자리에서 반올림해 1200이 되고, ROUNDUP(1234.567, -2)는 1300, ROUNDDOWN(1234.567, -2)는 1200입니다. 혼동하기 쉬운 예로 ROUND(12.34, 1)은 12.3입니다. 둘째 자리 4가 버려지기 때문에 12.4가 되지 않습니다.
2022년 상시04 35번은 이 계열을 그대로 묻습니다. "다음 수식의 결과가 나머지와 다른 것은?"이라는 질문에 보기는 =LEFT(123.654, 6), =ROUND(123.654, 2), =ROUNDUP(123.654, 2), =ROUNDDOWN(123.654, 2)입니다. 차례로 계산하면 LEFT는 앞에서 여섯 글자를 잘라 "123.65", ROUND는 셋째 자리 4를 버려 123.65, ROUNDDOWN도 123.65이고, ROUNDUP만 올림이 일어나 123.66입니다. 정답은 ROUNDUP입니다. 이 문항은 패스뱅크 회원 풀이 20건 중 정답률이 25%에 그쳐 2급 함수 문제 가운데 가장 낮았습니다. 숫자에 LEFT를 쓴 보기가 섞여 있고, 셋이 같고 하나가 다르다는 구조라 반올림과 올림을 정확히 계산하지 않으면 고르기 어렵습니다. 참고로 LEFT의 결과 "123.65"는 숫자가 아니라 텍스트입니다. 화면에 보이는 값이 같아서 이 문제에서는 같은 쪽으로 묶입니다.
TRUNC와 INT는 양수에서는 같은 결과를 내지만 음수에서 갈립니다. TRUNC(-3.7)은 소수 부분을 잘라 -3이고, INT(-3.7)은 그 수를 넘지 않는 가장 큰 정수라서 -4입니다. TRUNC의 자릿수 인수를 생략하면 0으로 처리됩니다.
MOD, POWER와 나머지 계산
MOD는 1급과 2급에서 각각 5문항씩 나왔습니다. MOD(7, 3)은 7을 3으로 나눈 나머지 1입니다. 나누어지는 수가 음수일 때는 결과의 부호가 나누는 수를 따릅니다. 그래서 MOD(-7, 3)은 -1이 아니라 2입니다. 몫만 구하는 QUOTIENT(7, 3)은 2이며, QUOTIENT(-7, 3)은 소수 부분을 버려 -2가 됩니다. POWER(2, 10)은 2의 10제곱인 1024입니다. =IF(MOD(A1, 2)=0, "짝수", "홀수")처럼 홀짝을 가르는 패턴이 가장 흔한 출제 형태입니다.
문자열 함수: LEFT, MID, RIGHT, REPLACE, REPT
LEFT(텍스트, 글자 수), RIGHT(텍스트, 글자 수), MID(텍스트, 시작 위치, 글자 수)는 구조가 단순한 만큼 위치를 세는 실수가 점수를 가릅니다. MID("2026-10-14", 6, 2)는 여섯 번째 글자부터 두 글자를 꺼내 "10"이 됩니다. 하이픈도 한 글자로 세야 합니다. 세 함수의 결과는 모두 텍스트이므로, 숫자로 비교하거나 계산하려면 VALUE로 바꾸거나 0을 더해야 합니다. 조건부 서식에서 =LEFT($A2, 1)="남"처럼 첫 글자로 행 전체를 칠하는 수식도 자주 보입니다.
REPLACE(원래 텍스트, 시작 위치, 바꿀 글자 수, 새 텍스트)는 1급에서 4문항 나왔습니다. REPLACE("010-1234-5678", 5, 4, "****")는 다섯 번째 글자부터 네 글자를 바꿔 "010-****-5678"을 돌려줍니다. 비슷한 이름의 SUBSTITUTE는 위치가 아니라 찾을 문자열로 바꾼다는 점이 다릅니다. REPT(텍스트, 반복 횟수)는 =REPT("★", 3)이 "★★★"이 되는 함수로, =REPT("♣", COUNTIF($B$3:$B$10, D3))처럼 개수만큼 기호를 찍는 문제로 나옵니다. REPT는 텍스트가 먼저, COUNTIF는 범위가 먼저라는 인수 순서를 섞어 보기를 만드는 경우가 있습니다.
COUNTIF 계열과 조건 쓰는 법
2급 1위인 COUNTIF(범위, 조건)는 조건을 문자열로 쓴다는 점이 핵심입니다. =COUNTIF(B2:B10, ">=80")처럼 비교 연산자를 큰따옴표 안에 넣습니다. 조건에 셀이나 함수 결과를 쓰려면 연산자만 따옴표로 감싸고 &로 이어야 합니다. 평균보다 큰 값의 개수는 =COUNTIF(B2:B10, ">"&AVERAGE(B2:B10))로 구합니다. ">AVERAGE(B2:B10)"처럼 통째로 따옴표 안에 넣으면 함수가 계산되지 않고 글자로 취급됩니다. 와일드카드도 자주 나옵니다. "김*"은 김으로 시작하는 모든 값, "??"는 정확히 두 글자인 값을 뜻합니다.
조건이 둘 이상이면 이름 끝에 S가 붙은 함수를 씁니다. 부서가 "영업부"이고 급여가 300만 원 이상인 직원 수는 =COUNTIFS(B2:B20, "영업부", D2:D20, ">=3000000")입니다. COUNTIF는 범위와 조건을 한 쌍만 받으므로 같은 인수를 COUNTIF에 넣으면 오류가 나고, COUNT나 DCOUNT는 인수 구조 자체가 다릅니다. 합계와 평균도 같은 구조입니다. =SUMIF(A2:A10, "영업팀", C2:C10)는 조건 범위, 조건, 합계 범위 순서이고, SUMIFS는 합계 범위가 맨 앞으로 옵니다. 이 순서 차이는 보기를 만들기 좋은 소재라 따로 외워 두는 편이 좋습니다.
VLOOKUP과 HLOOKUP
VLOOKUP(찾을 값, 범위, 열 번호, 찾는 방법)은 범위의 첫 번째 열에서 값을 찾고, 같은 행에서 지정한 열의 값을 돌려줍니다. 열 번호는 시트의 열 문자가 아니라 범위 안에서의 순서입니다. A열부터 D열까지 이름, 부서, 직급, 급여가 있을 때 =VLOOKUP("김철수", A2:D10, 3, FALSE)는 김철수의 직급을 돌려줍니다. 마지막 인수가 FALSE나 0이면 정확히 일치하는 값만 찾고, TRUE나 1이거나 생략하면 근삿값을 찾습니다. 근삿값 검색은 첫 열이 오름차순으로 정렬되어 있어야 제대로 동작합니다. HLOOKUP은 같은 원리를 가로 방향으로 적용해 첫 행에서 찾고 행 번호를 지정합니다.
RANK.EQ와 절대 참조
RANK.EQ(값, 범위, 순서)는 순서를 생략하거나 0을 넣으면 큰 값이 1위인 내림차순, 0이 아닌 값을 넣으면 오름차순입니다. 동점이면 같은 순위를 주고 다음 순위는 건너뜁니다. 90, 85, 85, 80이면 순위는 1, 2, 2, 4입니다. 동점 순위의 평균을 주는 RANK.AVG에서는 같은 자료가 1, 2.5, 2.5, 4가 됩니다. 채우기 핸들로 아래로 복사하는 문제에서는 =RANK.EQ(D2, $D$2:$D$10)처럼 비교 범위를 절대 참조로 고정했는지가 정답과 오답을 가릅니다.
1급에서 자주 나오는 함수: 위치와 범위를 다룬다
INDEX + MATCH + LARGE
1급 INDEX 7문항, MATCH 6문항, LARGE 5문항은 상당 부분 한 수식 안에 함께 있습니다. 실제로 =INDEX(A1:C6, MATCH(LARGE(C2:C6, 3), C1:C6, 0), 2)의 결과를 묻는 문제가 2024년 상시04 39번과 2026년 상시01 33번에 거의 같은 형태로 다시 나왔습니다. 안쪽부터 풀면 됩니다. LARGE(C2:C6, 3)은 C열 점수 중 세 번째로 큰 값입니다. MATCH(그 값, C1:C6, 0)은 그 값이 C1:C6에서 몇 번째인지를 돌려주는데, 범위가 1행 제목부터 시작하므로 제목 행도 한 칸으로 셉니다. INDEX(A1:C6, 그 위치, 2)는 같은 A1부터 시작하는 표에서 그 행의 두 번째 열, 즉 B열 값을 꺼냅니다. MATCH의 범위와 INDEX의 범위가 둘 다 1행에서 시작하기 때문에 행 위치가 어긋나지 않습니다. 만약 MATCH만 C2:C6로 바뀌면 한 칸씩 밀린 결과가 나오므로, 이 부분이 보기를 비트는 지점이 됩니다.
VLOOKUP은 찾는 열이 반드시 범위의 첫 열이어야 하지만 INDEX와 MATCH를 조합하면 그런 제한이 없습니다. =INDEX(A2:A10, MATCH("이수진", B2:B10, 0))은 B열에서 이름을 찾아 그 왼쪽인 A열 값을 돌려줍니다. 1급이 VLOOKUP보다 이 조합을 더 자주 묻는 이유가 여기에 있습니다.
MATCH의 세 번째 인수와 2차원 조회
MATCH(찾을 값, 범위, 일치 유형)의 일치 유형은 0, 1, -1 세 가지입니다. 0은 정확히 일치하는 값을 찾습니다. 1은 범위가 오름차순일 때 찾을 값보다 작거나 같은 값 중 가장 큰 값의 위치를, -1은 범위가 내림차순일 때 찾을 값보다 크거나 같은 값 중 가장 작은 값의 위치를 돌려줍니다. 예를 들어 범위가 0, 10, 20, 30이고 찾을 값이 25이면 일치 유형 1의 결과는 20의 위치인 3입니다.
2024년 상시01 30번은 단가표에서 제품 코드와 수량 구간을 동시에 찾는 문제였습니다. 정답은 =INDEX($B$12:$D$13, MATCH(A2, $A$12:$A$13, 0), MATCH(B2, $B$10:$D$10, 1))입니다. 제품 코드는 정확히 같아야 하므로 0, 수량은 구간의 시작값이 오름차순으로 적힌 행에서 찾으므로 1을 씁니다. 오답 보기들은 0과 1을 맞바꾸거나 INDEX의 인수 순서를 뒤집어 놓았습니다. INDEX는 항상 범위가 맨 앞이고 행 번호, 열 번호가 뒤따른다는 점을 기억하면 구조가 틀린 보기는 바로 지울 수 있습니다. 2025년 상시05 22번도 같은 구조의 배열 수식에서 일치 유형과 MATCH 범위의 행을 바꿔 보기를 만들었습니다.
ROW, COLUMN과 MOD로 만드는 조건부 서식
ROW(A5)는 5, COLUMN(C1)은 3을 돌려주고, 인수를 비우면 수식이 들어 있는 셀의 행과 열 번호를 돌려줍니다. 1급에서 ROW 4문항, COLUMN 3문항이 나온 것은 대부분 조건부 서식과 엮인 문제 때문입니다. 2024년 상시03 30번은 [A1:E5]에서 B열과 D열에만 배경색을 넣는 규칙을 고르게 했고, 정답은 =MOD(COLUMN(A$1), 2)=0입니다. 조건부 서식은 선택 영역의 왼쪽 위 셀을 기준으로 수식을 쓰고 각 셀로 상대 이동시키므로, A$1은 열을 따라 B$1, C$1로 바뀝니다. B는 2번째, D는 4번째 열이라 2로 나눈 나머지가 0입니다. $A1처럼 열을 고정하면 모든 셀에서 COLUMN 값이 1이 되어 어느 열도 칠해지지 않고, COLUMNS는 범위의 열 개수를 세는 다른 함수라 항상 1을 돌려줍니다. 짝수 행에 색을 넣는 규칙은 같은 원리로 =MOD(ROW(), 2)=0입니다.
OFFSET
OFFSET(기준 셀, 행 이동, 열 이동, 높이, 너비)는 기준에서 떨어진 위치의 셀이나 범위를 돌려줍니다. =OFFSET(A1, 2, 1)은 A1에서 아래로 두 칸, 오른쪽으로 한 칸 간 B3입니다. 높이와 너비를 주면 범위가 되므로 =SUM(OFFSET(A1, 1, 1, 2, 2))는 B2:C3의 합계입니다. 이동 값에 0을 넣으면 기준 셀의 행이나 열에 그대로 머문다는 점이 계산 문제에서 자주 확인됩니다.
COUNT·COUNTA, AVERAGE, MAXA·MINA
COUNT는 숫자(날짜 포함)가 든 셀만 세고, COUNTA는 비어 있지 않은 셀을 모두 셉니다. 텍스트나 오류 값이 든 셀도 COUNTA에서는 하나로 셉니다. A가 붙은 함수들은 같은 방식으로 텍스트와 논리값을 계산에 넣습니다. 범위에 10, 빈 셀, "가", 20이 있다면 AVERAGE는 숫자 두 개만 써서 15, AVERAGEA는 텍스트를 0으로 보고 세 셀로 나눠 10입니다. 빈 셀은 둘 다 무시합니다. 범위에 5, TRUE, "가"가 있으면 MIN은 5지만 MINA는 TRUE를 1, 텍스트를 0으로 보아 0이 됩니다. 범위에 -3과 TRUE만 있으면 MAX는 -3, MAXA는 1입니다.
FREQUENCY, TABLE, PMT, DAYS
등장 횟수는 2회씩이지만 1급에만 나오는 함수들입니다. FREQUENCY(데이터 범위, 구간 범위)는 각 구간 값 이하인 개수를 배열로 돌려주며, 결과 칸 수는 구간 수보다 하나 많습니다. 마지막 칸은 가장 큰 구간 값을 넘는 개수입니다. TABLE은 직접 입력하는 함수가 아니라 [데이터 표] 기능을 실행했을 때 결과 영역에 {=TABLE(행 입력 셀, 열 입력 셀)} 형태로 표시되는 수식입니다. 결과 일부만 고칠 수 없다는 점이 함께 출제됩니다.
PMT(이자율, 기간, 현재 가치)는 정기 상환액을 구합니다. 연이율과 연 단위 기간이 주어지고 월 상환액을 묻는다면 이자율은 연이율/12, 기간은 연수*12로 맞춰야 합니다. 빌린 금액을 양수로 넣으면 결과가 음수로 나오므로, 양수 결과를 원하는 문제에서는 현재 가치 앞에 마이너스를 붙입니다. DAYS(종료 날짜, 시작 날짜)는 두 날짜 사이의 일수를 구하는데, 끝 날짜가 먼저 옵니다. 2026년 10월 1일부터 14일까지는 13일입니다.
조합 문제를 푸는 순서
함수가 둘 이상 겹친 문제는 언제나 가장 안쪽 괄호부터 값을 적어 가며 풉니다. =CHOOSE(MOD(7, 3)+1, "월", "화", "수")는 MOD(7, 3)이 1, 거기에 1을 더해 2, CHOOSE의 두 번째 값이므로 "화"입니다. 중첩 IF인 =IF(A1>=90, "A", IF(A1>=80, "B", IF(A1>=70, "C", "D")))에 85를 넣으면 첫 조건이 거짓, 둘째 조건이 참이라 "B"에서 멈춥니다. 중첩 IF는 큰 기준부터 비교해야 하며, 순서를 거꾸로 써서 70 이상을 먼저 검사하면 85도 "C"가 되어 버립니다.
데이터베이스 함수도 같은 방식으로 읽습니다. =DSUM(A1:E20, "급여", G1:G2)에서 G1에 "부서", G2에 "영업부"가 있으면 영업부 직원 급여의 합계입니다. D 함수는 조건을 별도 셀 영역으로 지정하고, 그 조건 영역의 첫 행에는 반드시 데이터 범위와 같은 필드명이 있어야 합니다. 같은 행에 쓴 조건은 AND, 다른 행에 쓴 조건은 OR로 묶인다는 규칙은 고급 필터와 똑같습니다. 고급 필터 결과를 고르는 2026년 상시01 24번은 1급 회원 정답률이 27%(풀이 11건)로, 풀이 10건 이상 쌓인 1급 문항 가운데 가장 낮았습니다. 조건 영역의 행 배치를 읽는 연습이 그만큼 덜 되어 있다는 신호로 볼 수 있습니다.
공부 순서 제안
위 집계를 바탕으로 순서를 잡으면 다음과 같습니다. 2급 준비생은 COUNTIF 계열과 자릿수 함수, 문자열 함수를 먼저 끝내고 VLOOKUP과 RANK.EQ로 넘어가면 실제 출제 문항의 상당 부분을 다룰 수 있습니다. 1급 준비생은 2급 범위를 빠르게 확인한 뒤 INDEX·MATCH·LARGE 조합, ROW·COLUMN을 쓰는 조건부 서식, OFFSET, A 계열 함수, FREQUENCY·PMT·TABLE 순으로 넓혀 가면 됩니다.
| 단계 | 2급 우선 | 1급 추가 |
|---|---|---|
| 1 | COUNTIF·COUNTIFS·SUMIF·AVERAGEIF | INDEX·MATCH·LARGE·SMALL |
| 2 | ROUND·ROUNDUP·ROUNDDOWN·TRUNC·INT·MOD | ROW·COLUMN·MOD 조건부 서식, OFFSET |
| 3 | LEFT·MID·RIGHT·REPT·LOWER | COUNT·COUNTA·MAXA·MINA, REPLACE |
| 4 | VLOOKUP·HLOOKUP·RANK.EQ·IF | FREQUENCY·TABLE·PMT·QUOTIENT·DAYS, D 함수 |
함수는 읽어서 아는 것과 직접 계산해 보는 것의 차이가 큽니다. 엑셀을 열 수 있다면 위 예시 수식을 그대로 입력해 결과를 확인해 보세요. 그다음 컴활 2급 기출 해설집이나 컴활 1급 기출 해설집에서 함수 문제를 회차별로 다시 보면, 같은 구조가 반복되는 것이 눈에 들어옵니다. 1급과 2급 중 어느 쪽을 볼지 아직 정하지 않았다면 컴활 1급과 2급 비교를, 문제를 반복하는 방법은 기출 회독과 오답노트 활용을 참고하면 됩니다.