각각 71쪽, 75쪽에서 설명되어 있는 예제로는
=large( (조건)*계산범위, n번째로 큰 수)
=small (if(조건, 값을 구할 범위), n번째로 작은 수)
인데, small 배열 수식 이용시 large와 같은 형태(조건*계산범위)로는 쓸 수 없는건가요?
반대개념이라 될 줄 알았는데 안 되어서 궁금해서 질문드립니다. 감사합니다.
평균값이 186,503이 나왔어요.
if문을 입력할때 if(B11:B29=B3,G11:G29)처럼 작성하는 것은 조건이 거짓일 경우 "반환할 값"이 생략 (if(B11:B29=B3,G11:G29,"반환할 값"))된 것으로, if(B11:B29=B3,G11:G29,"")과 같이 조건의 값이 거짓일 때 이론적으로 아무값도 없는 NULL값을 반환 하라는 뜻입니다. NULL값이 반환되면 아무것도 없는 것이기 떄문에 AVERAGE 함수의 배열요소에서 제외 됩니다. 그런데 만약 배열 수식을 AVERAGE(IF(B11:B29=B3,G11:G29,0)이나 AVERAGE((B11:B29=B3)*(G11:G29)와 같이 작성하면 조건이 거짓일때 0이 AVERAGE함수로 포함되어 평균이 계산 되는 것입니다. 즉 '=AVERAGE(550000.1650000,4000000,165000,770000)' 와 '=AVERAGE(550000.1650000,4000000,165000,770000,0...)'의 차이겠죠. 같은 이유로 MIN, MEDIAN,SMALL 등의 함수도 반드시 IF문과 함께 사용해야 합니다.
좀 쉽게 설명 하자면
average(if(조건,반환할값))
으로 사용하면 조건에 맞으면 반환할 값을 나타내게 됩니다. 그리고 조건에 맞지 않으면 null 아무것도 가지지 않은 값이 나타난다는 것이죠.
만약 조건에 맞는 값중에 10,20,30,40,50 인 값이 있다면
average(10,20,,30,40,,50,,) 과 같이 null값이 생기게 됩니다. 조건에 맞으면 10,20 과 같은 값을 반환하게 되고, 조건이 맞지 않으면
빈 공백 , , 즉 아무것도 입력되지 않는 것이죠.
이렇게 하시면 10+20+30+40+50 을 해서 평균을 내면 됩니다. 그럼 평균은 30이 되게 되죠.
그런데
average((조건1)*(반환할값))
과 같이 쓰게 되면
조건이 참이면 1, 아니면 0이 되어
조건에 맞는 값이 10,20,30,40,50 이고 조건에 맞지 않는 값도 위에 처럼 있다고 하면
1 * 10 = 10
1 * 20 = 20
과 같이 되는데
조건이 거짓인것은
0 * 14 = 0
0 * 43 = 0
과 같이 0이 나오게 됩니다.
이렇게 되면
average(10,20,0,30,40,0,50,0,0) 이 되게 되고
이것을 다 더한값 150에 더한값의 개수인 9를 나눠 줘야 하기때문에
평균이 16.67 이 나오게 되는 것입니다.
평균이 확 줄었죠?
이렇게 0값이 들어오게 되면 평균이 이상하게 구해지게 되므로 if문이 꼭 필요하다는 설명을 하고 있는것입니다.
이와 비슷한 예로
min을 들어보면
위와 같이 조건이 참일때 반환하고 거짓일때는 아무것도 반환하지 않으면
min(10,20,,30,40,,50,,) 에서 최소값은 10이 됩니다.
그런데
if를 쓰지 않은 min값은
min(10,20,0,30,40,0,50,0,0) 되어 0이 최소값이 되는 것이죠.
구하고자 하는 값과 달라지게 되는 것입니다. min은 항상 0밖에 안나오게 되죠.
이런 이유로 min, median, small등도 if와 같이 사용하셔야 합니다.
좋은 하루 되세요.
-
*2011-06-08 10:49:061편 엑셀 111 페이지 설명입니다.
평균값이 186,503이 나왔어요.
if문을 입력할때 if(B11:B29=B3,G11:G29)처럼 작성하는 것은 조건이 거짓일 경우 "반환할 값"이 생략 (if(B11:B29=B3,G11:G29,"반환할 값"))된 것으로, if(B11:B29=B3,G11:G29,"")과 같이 조건의 값이 거짓일 때 이론적으로 아무값도 없는 NULL값을 반환 하라는 뜻입니다. NULL값이 반환되면 아무것도 없는 것이기 떄문에 AVERAGE 함수의 배열요소에서 제외 됩니다. 그런데 만약 배열 수식을 AVERAGE(IF(B11:B29=B3,G11:G29,0)이나 AVERAGE((B11:B29=B3)*(G11:G29)와 같이 작성하면 조건이 거짓일때 0이 AVERAGE함수로 포함되어 평균이 계산 되는 것입니다. 즉 '=AVERAGE(550000.1650000,4000000,165000,770000)' 와 '=AVERAGE(550000.1650000,4000000,165000,770000,0...)'의 차이겠죠. 같은 이유로 MIN, MEDIAN,SMALL 등의 함수도 반드시 IF문과 함께 사용해야 합니다.좀 쉽게 설명 하자면
average(if(조건,반환할값))
으로 사용하면 조건에 맞으면 반환할 값을 나타내게 됩니다. 그리고 조건에 맞지 않으면 null 아무것도 가지지 않은 값이 나타난다는 것이죠.
만약 조건에 맞는 값중에 10,20,30,40,50 인 값이 있다면
average(10,20,,30,40,,50,,) 과 같이 null값이 생기게 됩니다. 조건에 맞으면 10,20 과 같은 값을 반환하게 되고, 조건이 맞지 않으면
빈 공백 , , 즉 아무것도 입력되지 않는 것이죠.
이렇게 하시면 10+20+30+40+50 을 해서 평균을 내면 됩니다. 그럼 평균은 30이 되게 되죠.
그런데
average((조건1)*(반환할값))
과 같이 쓰게 되면
조건이 참이면 1, 아니면 0이 되어
조건에 맞는 값이 10,20,30,40,50 이고 조건에 맞지 않는 값도 위에 처럼 있다고 하면
1 * 10 = 10
1 * 20 = 20
과 같이 되는데
조건이 거짓인것은
0 * 14 = 0
0 * 43 = 0
과 같이 0이 나오게 됩니다.
이렇게 되면
average(10,20,0,30,40,0,50,0,0) 이 되게 되고
이것을 다 더한값 150에 더한값의 개수인 9를 나눠 줘야 하기때문에
평균이 16.67 이 나오게 되는 것입니다.
평균이 확 줄었죠?
이렇게 0값이 들어오게 되면 평균이 이상하게 구해지게 되므로 if문이 꼭 필요하다는 설명을 하고 있는것입니다.
이와 비슷한 예로
min을 들어보면
위와 같이 조건이 참일때 반환하고 거짓일때는 아무것도 반환하지 않으면
min(10,20,,30,40,,50,,) 에서 최소값은 10이 됩니다.
그런데
if를 쓰지 않은 min값은
min(10,20,0,30,40,0,50,0,0) 되어 0이 최소값이 되는 것이죠.
구하고자 하는 값과 달라지게 되는 것입니다. min은 항상 0밖에 안나오게 되죠.
이런 이유로 min, median, small등도 if와 같이 사용하셔야 합니다.
좋은 하루 되세요.