2026_최신기출문제_08회_2024년상시04
-3. 빈도수 계산 0/6
-결과 X [N9]에서의 값이 (4)로 정답(2)과 다릅니다.
=IF((RIGHT($B$3:$B$29,1)="M")+(RIGHT($B$3:$B$29,1)="L"),FREQUENCY($D$3:$D$29,$M$9:$M$12))
배열수식의 if()에서는 조건에 맞는 행에 있는 행의 값만 나온다. 그러니 if의 결과값에는 최종적으로 구할 결과값을 입력하는 것이 아니라, if의 결과값은 조건에 맞는 행에 있는 행의 값을 입력해야 한다. 라고 이해하면 이와 같은 실수를 줄일 수 있을까요?
ex)
조건행, 결과행
조건 0 ,값
조건 x ,false
조건 x, false
조건 0, 값
조건 x, false
조건 0 ,값
안녕하세요.
1. 결과가 잘못된 이유
- 작성하신 수식 =IF((조건1)+(조건2), FREQUENCY(범위, 구간))의 치명적인 실수는 함수의 우선순위와 배열의 구조에 있습니다.
- 잘못된 흐름 : 현재 수식은 IF 함수가 먼저 조건을 필터링하기 전에, 안쪽에 있는 FREQUENCY 함수가 이미 전체 범위에 대해 계산을 끝내버린 상태입니다.
즉, 조건에 맞는 데이터만 골라서 계산한 게 아니라, 전체 빈도수를 계산한 결과값 덩어리를 IF가 단순히 전달받은 꼴이 됩니다.
- 결과값 불일치 : FREQUENCY는 결과 자체가 배열로 나오는 함수인데, 이를 IF 문 안에서 통째로 계산해 버리면 조건과 결과 값의 행 위치가 서로 어긋나게 되어 엉뚱한 숫자가 합산되거나 출력됩니다.
2. 석진님의 이해 방식 : "조건에 맞는 행의 값만 남긴다"
석진님이 정리하신 "조건에 맞는 행의 값만 입력(반환)해야 한다"는 개념은 배열 수식의 핵심을 정확히 꿰뚫고 있습니다. 이 방식대로 생각하면 실수를 완벽히 방지할 수 있습니다.
[올바른 생각의 흐름]
1. 조건 검사 : 상품코드 마지막 글자가 M 또는 L인가? (True/False)
2. 값 추출 (IF): True라면 그 행의 '상품상태(D열) 데이터'를 반환하고, False라면 제외한다.
3. 최종 계산 (FREQUENCY): 그렇게 걸러진(필터링 된) 데이터들만 모아서 빈도수를 측정한다.
3. 정답 수식 가이드
위 로직을 수식으로 구현하면 다음과 같습니다. FREQUENCY 함수 내부에 IF를 넣어서 계산할 대상 자체를 먼저 필터링하는 것이 핵심입니다.
=FREQUENCY(IF((RIGHT($B$3:$B$29,1)="M")+(RIGHT($B$3:$B$29,1)="L"), $D$3:$D$29), $M$9:$M$12)
- IF 부분 : 조건에 맞는 행은 D열(상품상태) 값을 남기고, 나머지는 FALSE로 만듭니다.
- FREQUENCY 부분: IF가 걸러준 값(숫자들)만 가지고 지정된 구간(M9:M12)의 빈도를 구합니다. (FALSE는 무시합니다.)
즐거운 하루 되세요.
-
관리자2026-05-14 09:59:52
안녕하세요.
1. 결과가 잘못된 이유
- 작성하신 수식 =IF((조건1)+(조건2), FREQUENCY(범위, 구간))의 치명적인 실수는 함수의 우선순위와 배열의 구조에 있습니다.
- 잘못된 흐름 : 현재 수식은 IF 함수가 먼저 조건을 필터링하기 전에, 안쪽에 있는 FREQUENCY 함수가 이미 전체 범위에 대해 계산을 끝내버린 상태입니다.
즉, 조건에 맞는 데이터만 골라서 계산한 게 아니라, 전체 빈도수를 계산한 결과값 덩어리를 IF가 단순히 전달받은 꼴이 됩니다.
- 결과값 불일치 : FREQUENCY는 결과 자체가 배열로 나오는 함수인데, 이를 IF 문 안에서 통째로 계산해 버리면 조건과 결과 값의 행 위치가 서로 어긋나게 되어 엉뚱한 숫자가 합산되거나 출력됩니다.
2. 석진님의 이해 방식 : "조건에 맞는 행의 값만 남긴다"
석진님이 정리하신 "조건에 맞는 행의 값만 입력(반환)해야 한다"는 개념은 배열 수식의 핵심을 정확히 꿰뚫고 있습니다. 이 방식대로 생각하면 실수를 완벽히 방지할 수 있습니다.
[올바른 생각의 흐름]
1. 조건 검사 : 상품코드 마지막 글자가 M 또는 L인가? (True/False)
2. 값 추출 (IF): True라면 그 행의 '상품상태(D열) 데이터'를 반환하고, False라면 제외한다.
3. 최종 계산 (FREQUENCY): 그렇게 걸러진(필터링 된) 데이터들만 모아서 빈도수를 측정한다.
3. 정답 수식 가이드
위 로직을 수식으로 구현하면 다음과 같습니다. FREQUENCY 함수 내부에 IF를 넣어서 계산할 대상 자체를 먼저 필터링하는 것이 핵심입니다.
=FREQUENCY(IF((RIGHT($B$3:$B$29,1)="M")+(RIGHT($B$3:$B$29,1)="L"), $D$3:$D$29), $M$9:$M$12)
- IF 부분 : 조건에 맞는 행은 D열(상품상태) 값을 남기고, 나머지는 FALSE로 만듭니다.
- FREQUENCY 부분: IF가 걸러준 값(숫자들)만 가지고 지정된 구간(M9:M12)의 빈도를 구합니다. (FALSE는 무시합니다.)
즐거운 하루 되세요.