사용자 정의함 수 중에서
if 구문사용 중 중간에 평균을 average로 구하려니 사용이 안되네요..
시나공 2003 p122 <실전모의고사 J형> 이고, 문제는
2. 판정을 계산하는 사용자 정의함수 'sh판정'을 작성하여 계산을 수행하시오.
-'sh판정'은 국어, 영어, 수학, 결석, 평균을 인수로 받아 평군을 계산하여 되돌려줌
-판정은 국어, 영어, 수학이 모두 60점 이상이고, 결석이 1보다 작고, 평균이 70점 이상이면 "합격"과 국어, 영어, 수학의 평균을 연결하여 표시하고, 그렇지 않으면 "불합격"을 표시
-이하생략-
여기서 답지는
if ~~~~
sh판정 = "합격" & int((국어+영어+수학)/3)
else
-이하생략
으로 색깔 표시한것만 봐주세욤.ㅠ 평균을 일일이 더해서 나누기를 했더라구요.
저는 int(average(국어,영어,수학)/3)
으로 넣었고, 그랬더니 sub 또는 function이 정의되지 않았습니다.
라는 문구가 뜹니다. 왜 그런걸까요? 도와주세요.ㅠ
123페이지 4번 문제입니다. 해설 부분에
=INT( AVERAGE(IF( ($I$3:$I$23=K16) * (($I$3:$I$23=K16)* ($F$3:$F$23)<>MAX( ($I$3:$I$23=K16) * ($F$3:$F$23)) ), $F$3:$F$23 ) ))
이라되어있었습니다.
저는
=INT( AVERAGE(IF( ($I$3:$I$23=K16) * ( ($I$3:$I$23=K16) * ($F$3:$F$23<>MAX( ($I$3:$I$23=K16) * ($F$3:$F$23)) ) ), $F$3:$F$23 ) ))
으로 값은 같이 나왔습니다.
제가 이해한 방법은 ($F$3:$F$23<>MAX( ($I$3:$I$23=K16) * ($F$3:$F$23)) ) 이 인수 자체가 true 인지, false 인지를 파악했습니다. 근데 답을 보니 '<>가 마치 연산자처럼 쓰여진건가?' 하는 궁금증이 생기더라구요.
연산자라면 *는 이해를 하겠습니다. (~~) * (~~) 에서 true가 1, false가 0 이라 각각 만족하면 1*1=1로 반영된다고 이해를 했습니다. 그럼 <>는 어떤 개념으로 이해해야할까요?
1. 프로시저에서 사용할 수 있는 함수와 엑셀에서 사용하는 함수가 다르기 때문에
프로시저에서 실행이 안될 수 있습니다.
average 나 avg 의 사용이 안되므로 모든 값을 더한 후 나눠서 평균을 표시하는 것입니다.
2. int(avearge(if((조건1)*((조건2)*(범위)<>max((조건3)*(값을구할범위))),값을구할범위)))
가 됩니다. 조건2와 조건3에서 범위가 지정된 것은 비교할 값을 구하기 위한 것이구요.
마지막의 값을 구할범위에서 결과 값이 나오게 됩니다.
max값에서도 반별로 조건을 적용하기 위한 것이죠.
=INT(AVERAGE(IF(($I$3:$I$23=K16)*(($I$3:$I$23=K16)*($F$3:$F$23)<>MAX(($I$3:$I$23=K16)*($F$3:$F$23))),$F$3:$F$23)))
IF( ($I$3:$I$23=K16) *
반이 같은지 비교합니다.
(($I$3:$I$23=K16)*($F$3:$F$23)<>MAX(($I$3:$I$23=K16)*($F$3:$F$23)))
반이 같은 사람의 평균과 반이 같은 사람의 평균 중 가장 큰 값을 비교하여 큰 값과 같지 않은 값을 추출합니다. 여기의 조건의 앞의 조건과 이어지는 것이 아닙니다. 평균 중 가장 큰 평균을 제외하는 조건으로 반은 값 안에서의 가장 큰 값을 제외하기 위한 조건입니다.
<> 은 같지않다, ~이 아닌 이므로 max값을 제외하기 위한 것입니다.
좋은 하루 되세요.
-
*2016-04-11 14:04:50
1. 프로시저에서 사용할 수 있는 함수와 엑셀에서 사용하는 함수가 다르기 때문에
프로시저에서 실행이 안될 수 있습니다.
average 나 avg 의 사용이 안되므로 모든 값을 더한 후 나눠서 평균을 표시하는 것입니다.
2. int(avearge(if((조건1)*((조건2)*(범위)<>max((조건3)*(값을구할범위))),값을구할범위)))
가 됩니다. 조건2와 조건3에서 범위가 지정된 것은 비교할 값을 구하기 위한 것이구요.
마지막의 값을 구할범위에서 결과 값이 나오게 됩니다.
max값에서도 반별로 조건을 적용하기 위한 것이죠.
=INT(AVERAGE(IF(($I$3:$I$23=K16)*(($I$3:$I$23=K16)*($F$3:$F$23)<>MAX(($I$3:$I$23=K16)*($F$3:$F$23))),$F$3:$F$23)))
IF( ($I$3:$I$23=K16) *
반이 같은지 비교합니다.
(($I$3:$I$23=K16)*($F$3:$F$23)<>MAX(($I$3:$I$23=K16)*($F$3:$F$23)))
반이 같은 사람의 평균과 반이 같은 사람의 평균 중 가장 큰 값을 비교하여 큰 값과 같지 않은 값을 추출합니다. 여기의 조건의 앞의 조건과 이어지는 것이 아닙니다. 평균 중 가장 큰 평균을 제외하는 조건으로 반은 값 안에서의 가장 큰 값을 제외하기 위한 조건입니다.
<> 은 같지않다, ~이 아닌 이므로 max값을 제외하기 위한 것입니다.
좋은 하루 되세요.