2017/07/13 - [엑셀] - [엑셀] 배열수식에 여러 개의 조건 사용하기 와
2017/07/14 - [엑셀] - [엑셀] 상/하위 몇 퍼센트에 해당하는 값 알아보기 percentile()
위 두 가지를 이용하면 상/하위 몇%의 값뿐 아니라, 그 구간에 해당하는 값의 평균도 구해볼 수 있다.
(AVERAGEIFS 등의 함수를 이용할 수도 있으나 여기서는 배열수식을 이용하기로 한다.)
다음과 같은 자료가 있다고 하자.
일단 하위 10%에 해당하는 값을 찾으려면 Percentile.INC 를 이용해야 할 것이다.
(2017/07/31 - [엑셀] - [엑셀] PERCENTILE INC와 EXC의 차이 참고)
345.3이라고 한다.
그러니 하위 10%에 해당하는 값은 317, 336, 337, 345 네 개가 될 것이다.
이 값들을 배열로 만들기 위해 다음과 같이 적는다.
A열의 10%에 해당하는 값보다 작은 행들의, A열 값들로 만든 배열
IF(A:A<PERCENTILE.INC(A:A,10%), A:A)
하지만 이대로 하면 A:A에 있는 빈 셀들이 0이라는 값으로 배열에 포함되어 제대로 평균이 나오지 않는다.
Average()나 Percentile()모두 알아서 빈셀을 제외하고 결과를 도출해 주나,
배열을 만들 때는 빈 셀이 0의 값으로 배열에 포함될 수 있으므로 주의한다.
번거롭지만, "0이 아닌"에 해당하는 조건을 추가해주자.
조건이 2개 이상이므로 *(asterisk)를 사용한다.
(A열의 10%에 해당하는 값보다 작고)*(0은 아닌 행들의), A열 값들로 만든 배열
IF((A:A<PERCENTILE.INC(A:A,10%))*(A:A<>0), A:A)
배열만으로는 값이 나오지 않으므로 Average로 둘러싸 주자.
=AVERAGE(IF((A:A<PERCENTILE.INC(A:A,10%))*(A:A<>0),A:A))
배열수식이므로 Ctrl + Shift + Enter를 잊지 않는다.
하위 10%의 평균은 333.8이다.
이번에는 20%에 해당하는 백분위수를 구해보자.
394가 나왔다.
하위 20%의 평균을 구하고 싶다면 아까와 같은 방법을 사용하면 되겠고,
여기서는 10% ~ 20% 구간에 해당하는 값들의 평균을 구해 보자.
10% 가 345.3, 20%가 394이므로
10% ~ 20% 구간에 해당하는 값은 346, 363, 382 세 개가 된다.
배열수식을 이용하여 이 범위에 해당하는 배열을 만들자.
(A열의 10%에 해당하는 값보다는 크고)*(20%에 해당하는 값보다는 작은행들의), A열 값들로 만든 배열
IF((A:A>=PERCENTILE.INC(A:A,10%))*(A:A<PERCENTILE.INC(A:A,20%)), A:A)
이 경우 345.3이나 394에 해당하는 값이 데이터에 없으므로 이상과 초과, 이하와 미만이 동일하지만
공교롭게 데이터에 있는 값이 나올 수도 있으므로 원칙을 나름 정해 두면 좋다.
여기서는 낮은 값 이상, 높은 값 미만으로 정해주었다.
배열만으로는 값이 나오지 않으므로 Average()로 둘러싸 주자.
=AVERAGE(IF((A:A>=PERCENTILE.INC(A:A,10%))*(A:A<PERCENTILE.INC(A:A,20%)),A:A))
마지막으로 Ctrl + Shift + Enter를 잊지 않는다.
346, 363, 382 세 값의 평균이 나온다.
10% 구간별로 같은 작업을 반복하려면 일일이 써주기보다 다음과 같이 하는 편이 낫다.
애초 수식에서 10%와 20%라는 값에 해당하는 자리가, C열의 셀들을 참조하도록 바뀌었다.
이제 아래로 복사해 주면
의도한대로 평균이 잘 나오는 것을 볼 수 있다.
유일한 예외는 10% 미만 구간에 해당하는 값인데, 앞서 하위 10%의 평균을 구할 때 나온 것처럼 수식을 적거나
=AVERAGE(IF((A:A<PERCENTILE.INC(A:A,10%))*(A:A<>0),A:A))
혹은 위에 0%를 하나 더 만들어 주어 0% ~ 10%로 인식하도록 해도 되겠다.
여기서 Percentile.INC(A:A,C1)은 A열의 0%를 의미하는데,
Percentile이 판단하기에 A열의 0%는 0(빈셀)이 아니라 최소값인 317에 해당하므로 자연히 0을 제외하고 평균을 구하게 된다.
참고로 AVERAGEIFS로 10% ~ 20% 구간의 평균을 구할 때는 다음과 같은 수식을 사용한다.
=AVERAGEIFS(A:A, A:A,">="&PERCENTILE.INC(A:A,10%), A:A,"<"&PERCENTILE.INC(A:A,20%))
배열수식을 사용하는 것과 크게 다르지 않으나, 일단 원하는 값들로 배열을 만드는 것에 익숙해지면
AVERAGEIFS 같은 함수의 문법을 별도로 찾아보지 않아도 된다는 장점이 있다.
'엑셀' 카테고리의 다른 글
[엑셀] 실무에서 많이 사용하는 엑셀 단축키 모음 (0) | 2017.08.09 |
---|---|
[엑셀] 특정 문자열에 해당하는 값 참조하기 VLOOKUP, MATCH (0) | 2017.08.08 |
[엑셀] 도수분포표/히스토그램 만들기 (2016 데이터분석도구 설치하기) (8) | 2017.08.07 |
[엑셀] 랜덤추출하기 RANDBETWEEN() (10) | 2017.08.03 |
[엑셀] 계산 결과 값으로 셀 지정하기 INDIRECT() (0) | 2017.08.02 |
[엑셀] PERCENTILE INC와 EXC의 차이 (0) | 2017.07.31 |
[엑셀] 상/하위 몇 퍼센트에 해당하는 값 알아보기 percentile() (2) | 2017.07.14 |
[엑셀] 배열수식에 여러 개의 조건 사용하기 (5) | 2017.07.13 |
[엑셀] 두 수의 사이 빈 곳에 알맞게 연속된 숫자 채우기 (0) | 2017.07.12 |
[엑셀] Char()에 할당된 번호 알아보기, 연속되는 알파벳 채우기 (0) | 2017.07.11 |
댓글