책 내용 질문하기
사용자정의함수에서 average // 배열함수에서 <>
도서
[2013] 컴퓨터활용능력 1급 실기(엑셀, 액세스 2007 사용자용)
페이지
122
조회수
222
작성일
2016-04-07
작성자
첨부파일

사용자 정의함 수 중에서

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로 반영된다고 이해를 했습니다. 그럼 <>는 어떤 개념으로 이해해야할까요?

답변
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값을 제외하기 위한 것입니다.

좋은 하루 되세요.

  • *
    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값을 제외하기 위한 것입니다.

    좋은 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.