Copyright © Origin Corp. All Rights Reserved.
v1.0.10
로딩 중입니다
행복에는 덕이면 충분하다안티스테네스
배열수식 문제는 컴활 1급 스프레드시트 영역에서 매 회차 1~2문항씩 빠지지 않고 나옵니다.
단순히 함수 이름을 외우는 게 아니라, 조건을 논리값으로 변환해 연산하는 원리를 이해하는지 테스트하는 유형입니다.
특히 AND 조건과 OR 조건을 배열수식으로 어떻게 표현하는지, 이 차이 하나가 당락을 가릅니다.
[문제] 다음 중 [A2:A10]의 부서가 '영업부'이면서 [B2:B10]의 실적이 100 이상인 건수를 구하는 배열수식으로 옳은 것은?
① =SUM((A2:A10="영업부")+(B2:B10>=100))
② =SUM((A2:A10="영업부")(B2:B10>=100))
③ =SUMIF(A2:A10,"영업부",B2:B10>=100)
④ =COUNTIF(A2:A10,"영업부")COUNTIF(B2:B10,">=100")
*정답: ② =SUM((A2:A10="영업부")(B2:B10>=100))**
이 문제에서 핵심은요, 엑셀에서 논리값 TRUE는 숫자 1, FALSE는 숫자 0으로 취급된다는 사실입니다.(A2:A10="영업부")는 각 셀을 비교해 TRUE 또는 FALSE로 이루어진 배열을 만들고, (B2:B10>=100)도 마찬가지로 배열을 만듭니다.
이 두 배열을 *곱하면(\)**, 두 조건이 모두 TRUE인 행만 1×1=1이 되고 나머지는 0이 되어, SUM이 그 개수를 정확히 셉니다.
배열수식이기 때문에 수식 입력 후 반드시 Ctrl+Shift+Enter를 눌러야 중괄호 { }가 붙으면서 배열로 처리됩니다.
일반 Enter를 누르면 배열 전체를 계산하지 못해 #VALUE! 오류가 납니다.
시험 문제에서는 결과값만 보기로 주어지는 경우가 많아, 이 오류 가능성을 스스로 판단해야 합니다.
① =SUM((A2:A10="영업부")+(B2:B10>=100))
더하기(+)를 쓰면 두 조건 중 하나라도 TRUE이면 포함되는 OR 조건이 됩니다.
"이렇게 생각하면 틀린다"는 패턴이 있어요 "두 조건을 합친다"는 말을 듣고 무의식적으로 더하기를 쓰는 경우입니다.
BUT, AND는 곱하기(\*), OR는 더하기(+)라는 규칙을 반대로 기억하는 수험생이 생각보다 많습니다.
더하기 버전에서는 두 조건이 모두 TRUE인 행은 1+1=2가 되어 건수가 두 배로 뻥튀기됩니다.
즉 중복 카운트가 발생해 실제 건수보다 더 큰 값이 나옵니다.
③ =SUMIF(A2:A10,"영업부",B2:B10>=100)
SUMIF는 편리하지만 결정적인 한계가 있습니다.
세 번째 인수는 합산할 범위이지, 배열 조건식이 들어가는 자리가 아닙니다.B2:B10>=100 자체를 SUMIF의 세 번째 인수로 넣으면 엑셀은 이를 배열 조건으로 해석하지 못하고 오류를 냅니다.
SUMIF는 단일 조건에만 쓸 수 있고, 다중 조건은 SUMIFS 또는 배열수식으로 풀어야 합니다.
*④ =COUNTIF(A2:A10,"영업부")COUNTIF(B2:B10,">=100")**
이 보기가 가장 교묘한 함정입니다.
"영업부인 행의 수"와 "실적 100 이상인 행의 수"를 각각 세서 곱하면 되지 않나? 라고 생각하기 쉽습니다.
하지만 이 계산은 두 조건이 같은 행에 동시에 성립하는지를 전혀 보장하지 않습니다.
예를 들어 영업부가 3명, 실적 100 이상이 4명이라면 결과가 12가 나오는데, 실제 조건을 동시에 만족하는 사람이 2명이어도 12가 나와버립니다.
행 단위로 두 조건을 함께 평가하지 않기 때문에 완전히 다른 값이 됩니다.
*AND 조건 = 곱하기(\), OR 조건 = 더하기(+)**
이 하나만 확실히 기억하면 SUM+IF 배열수식 문제는 절반 이상 풀립니다.
배열수식 입력은 반드시 Ctrl+Shift+Enter
일반 Enter로 입력하면 배열 연산이 이루어지지 않아 오류 또는 잘못된 결과가 나옵니다.
FREQUENCY 함수는 배열수식 중에서도 특이하게 동작하는 함수라서, 매년 이 특이한 동작 자체를 문제로 출제합니다.
결과를 입력하기 전에 출력 범위를 미리 선택해야 하고, 결과 셀 수가 구간 수보다 반드시 하나 더 많아야 한다는 점을 테스트합니다.
이 두 가지를 모르면 정답을 골라도 확신이 없고, 모르면 무조건 틀리는 유형입니다.
[문제] [A2:A11]에 점수 데이터가 있고 [C2:C4]에 구간값 60, 80, 100이 있다. [D2:D5]에 구간별 인원수를 구하는 올바른 방법은?
① [D2]에 =FREQUENCY(A2:A11,C2:C4) 입력 후 Enter
② [D2:D4]를 선택하고 =FREQUENCY(A2:A11,C2:C4) 입력 후 Ctrl+Shift+Enter
③ [D2:D5]를 선택하고 =FREQUENCY(A2:A11,C2:C4) 입력 후 Ctrl+Shift+Enter
④ [D2:D5]를 선택하고 =FREQUENCY(C2:C4,A2:A11) 입력 후 Ctrl+Shift+Enter
정답: ③ [D2:D5]를 선택하고 =FREQUENCY(A2:A11,C2:C4) 입력 후 Ctrl+Shift+Enter
FREQUENCY(dataarray, binsarray)에서 bins는 "이하" 기준 구간 경계값입니다.
bins가 60, 80, 100으로 3개이면, 실제로 만들어지는 구간은 60 이하 / 61~80 / 81~100 / 100 초과, 이렇게 4구간이 됩니다.
즉 결과 셀은 항상 bins 개수보다 1개 더 많아야 하고, 그 마지막 셀에는 구간 최대값을 초과하는 데이터 수가 들어갑니다.
따라서 bins가 3개(C2:C4)이므로 결과를 담을 범위는 반드시 4셀(D2:D5)이어야 합니다.
범위를 먼저 선택하고 수식을 입력한 뒤 Ctrl+Shift+Enter로 배열 확정하면, 4개의 구간별 빈도가 한꺼번에 채워집니다.
이것이 FREQUENCY가 일반 함수와 다르게 동작하는 핵심입니다.
① [D2]에 =FREQUENCY(A2:A11,C2:C4) 입력 후 Enter
여기서 많이 헷갈리는데요, 일반 Enter로 입력하면 배열수식이 아닌 일반 수식으로 처리됩니다.
이 경우 D2 셀 하나에만 첫 번째 구간(60 이하)의 빈도만 나오고, 나머지 구간은 아예 계산되지 않습니다.
범위를 선택하지 않은 상태에서 Enter를 눌렀으니 배열 전체 출력 자체가 불가능합니다.
② [D2:D4]를 선택하고 =FREQUENCY(A2:A11,C2:C4) 입력 후 Ctrl+Shift+Enter
이 보기가 가장 많이 선택되는 오답입니다.
bins가 3개니까 결과도 3개면 되지 않을까 하는 생각에서 나오는 실수입니다.
하지만 60 초과 데이터, 즉 100을 넘는 점수가 있다면 그 인원은 어디에도 집계되지 않아 총합이 전체 인원수와 달라지는 치명적 오류가 발생합니다.
시험에서 이렇게 나오면 구간 수에 속지 말고 "bins+1개 선택"을 떠올려야 합니다.
④ [D2:D5]를 선택하고 =FREQUENCY(C2:C4,A2:A11) 입력 후 Ctrl+Shift+Enter
셀 선택과 Ctrl+Shift+Enter는 정확히 했지만 인수 순서가 뒤바뀌었습니다.
FREQUENCY의 첫 번째 인수는 원본 데이터 배열, 두 번째가 구간 경계값입니다.
C2:C4(구간값)를 데이터로, A2:A11(점수)을 bins로 넣으면 함수가 전혀 다른 의미로 계산되어 엉뚱한 결과가 나옵니다.
인수 순서를 헷갈리는 수험생이 의외로 많으니, FREQUENCY는 "데이터 먼저, bins 나중"이라고 순서를 고정해 두세요.
결과 범위 = bins 개수 + 1
bins가 n개이면 출력 셀은 반드시 n+1개를 선택해야 초과 구간까지 포함됩니다.
범위 선택 → 수식 입력 → Ctrl+Shift+Enter 순서가 FREQUENCY의 정석 입력 방법입니다.
이 순서를 바꾸면 단일 셀에만 결과가 나오거나 배열 처리가 되지 않습니다.
단순 VLOOKUP 문제는 2급 수준입니다.
1급에서는 VLOOKUP이 처리할 수 없는 상황을 주고, INDEX+MATCH 조합이 왜 필요한지를 묻는 형태로 출제됩니다.
어떤 함수가 쓸 수 없는지, 즉 "옳지 않은 것"을 고르는 문제가 많기 때문에 오답 보기를 꼼꼼히 분석하는 훈련이 필요합니다.
[문제] [A2:A11]에 사번, [B2:B11]에 이름이 있다. 이름이 '김철수'인 사람의 사번을 구하는 수식으로 옳지 않은 것은?
① =INDEX(A2:A11,MATCH("김철수",B2:B11,0))
② =VLOOKUP("김철수",A2:B11,1,FALSE)
③ =INDEX(A2:A11,MATCH("김철수",B2:B11,0),1)
④ =LOOKUP("김철수",B2:B11,A2:A11)
정답: ② =VLOOKUP("김철수",A2:B11,1,FALSE)
VLOOKUP에는 결정적인 제약이 하나 있습니다.
검색 키(lookup_value)는 참조 범위의 첫 번째 열에서만 찾는다는 것입니다.VLOOKUP("김철수",A2:B11,1,FALSE)에서 참조 범위는 A2:B11이고, 첫 번째 열은 A열(사번)입니다.
엑셀은 A열에서 '김철수'를 찾으려 시도하는데, A열에는 이름이 아닌 사번만 있으므로 #N/A 오류가 발생합니다.
이름(B열)으로 사번(A열)을 찾는 것은 오른쪽에서 왼쪽을 보는 역방향 조회입니다.
VLOOKUP은 항상 왼쪽에서 오른쪽으로만 찾기 때문에 이 구조에서는 사용이 불가능합니다.
시험에서 "이름으로 사번을 찾아라" 또는 "왼쪽 열의 값을 반환하라"는 조건이 나오면, VLOOKUP은 즉시 오답 후보로 표시하세요.
① =INDEX(A2:A11,MATCH("김철수",B2:B11,0))
MATCH("김철수",B2:B11,0)은 B열에서 '김철수'를 정확하게 찾아 그 행 번호(상대적 위치)를 반환합니다.
INDEX(A2:A11, 그 행 번호)는 A열에서 해당 위치의 값, 즉 사번을 반환합니다.
이것이 역방향 조회의 정석 조합이며, 이 수식은 정확하게 동작합니다.
③ =INDEX(A2:A11,MATCH("김철수",B2:B11,0),1)
①과 거의 같은 수식인데 마지막에 ,1이 추가되어 있습니다.
INDEX의 세 번째 인수는 열 번호로, A2:A11처럼 단일 열 범위에서는 1을 지정해도 결과가 동일합니다.
즉 생략해도 되는 인수를 명시적으로 쓴 것뿐이므로 이 수식도 정상적으로 동작합니다.
④ =LOOKUP("김철수",B2:B11,A2:A11)
LOOKUP 함수의 벡터형은 LOOKUP(검색값, 검색벡터, 결과벡터) 구조로, 검색벡터와 결과벡터를 별도로 지정할 수 있습니다.
B열에서 '김철수'를 찾아 같은 위치의 A열 값을 반환하므로 역방향 조회가 가능합니다.
단, LOOKUP은 검색벡터가 오름차순 정렬되어 있어야 정확한 결과를 냅니다.
이름이 가나다순으로 정렬되어 있다는 전제가 충족된다면 유효한 수식입니다.
MATCH의 세 번째 인수도 시험에서 자주 묻히는 포인트입니다.
0은 정확히 일치, 1은 이하 최대값(오름차순 정렬 필요), -1은 이상 최소값(내림차순 정렬 필요)입니다.
대부분의 역방향 조회 문제에서는 정렬을 가정하지 않으므로 MATCH의 세 번째 인수로 반드시 0을 써야 합니다.
VLOOKUP은 검색 키가 항상 첫 번째 열에 있어야 한다.
역방향 조회가 필요하면 VLOOKUP은 쓸 수 없고, INDEX+MATCH 조합을 사용해야 합니다.
INDEX+MATCH 공식: =INDEX(결과열, MATCH(검색값, 검색열, 0))
이 패턴을 통째로 외워두면 어떤 방향의 조회 문제가 나와도 적용할 수 있습니다.
TTS 음성이 없어요.
아래 버튼으로 나레이션을 생성할 수 있습니다.
2
개