책 내용 질문하기
p134의 문제 1번에서 수식 세우는 것에서 질문드립니다.
도서
[2012] 컴퓨터활용능력 1급 실기(엑셀, 액세스 2007 사용자용)
페이지
134
조회수
46
작성일
2012-10-29
작성자
첨부파일

1번에서 배열 수식의 답은

=SMALL(IF(H$2=LEFT($B$3:$B$23,1),$C$3:$C$23),$G3)입니다.

제가 세운 식은

=if(IF(H$2=LEFT($B$3:$B$23,1),small($C$3:$C$23,$G3)로 배열수식을 만들었습니다.

저는 이 2가지 식에서 어떤 차이점 때문에 제가 세운 수식이 오류가 나는지 감이 오질 않아서

이렇게 질문드립니다~~*

답변
2012-10-30 20:30:33

먼저 해답이라고 나온 수식을 살펴봅시다.(수식 자체만 보면 되니 절대값 기호는 다 생략했습니다.)

=SMALL(IF(H2=LEFT(B3:B23,1),C3:C23),G3)

위 밑줄친 배열 함수를 계산하면

IF(H2=LEFT(B3, 1), C3) → 참이므로 C3셀인 '5:05'를 값으로 취합니다.

IF(H2=LEFT(B4, 1), C4) → 거짓이기 때문에 값이 없죠..

...

IF(H2=LEFT(B23, 1), C23) → 참이므로 C23셀인 '3:42'를 값으로 취합니다.

즉 배열수식 결과 5분5초, 3분42초를 포함한 모든 남성들 기록들을 현재 값으로 취하고 있습니다.

이 중에서 SMALL함수를 통해 그 중에서 G3번째, 즉 첫번째 기록만을 결과로 나타내게 됩니다.

전형적인 답이 되겠네요.

이제 직접 세운 식을 분석해봅시다.

IF ( IF(H2=LEFT(B3:B23,1), SMALL(C3:C23,G3) )

우선 위 식은 IF문이 두 번 들어간 식입니다.

그런데 한 IF함수는 조건만 있고 인수만 있습니다. 그래서 오류가 나게 됩니다.

오류가 나지 않기 위해서는 아래와 같이 IF를 하나만 입력하셔야 합니다.

=IF(H2=LEFT(B3:B23, 1), SMALL(C3:C23, G3))

이렇게 입력하시면 오류는 나지 않고 입력이 되기는 합니다...(맞는것 같기도??)

그런데 문제는 배열수식이라는 것이죠... 배열을 한 번 풀어서 볼까요?

=IF(H2=LEFT(B3, 1), SMALL(C3, G3))

→ 참입니다. 조건에 의해 C3 하나의 셀에 대해서 G3번째 작은 값을 취합니다?(뭔가 이상하죠?)

=IF(H2=LEFT(B4, 1), SMALL(C4, G3)) → 거짓입니다. 그래서 값이 없습니다.

...

=IF(H2=LEFT(B23, 1), SMALL(C23, G3))

→ 참입니다. 조건에 의해 C23 하나의 셀에 대해 G3번째 작은 값을 취합니다...

여기서 G3값이 1인 경우는 오류가 나지 않게 됩니다만, 2 이상의 경우에는 오류가 발생합니다.

값이 하나인데 그 중에서 두 번째나 세 번째로 작은 값이 있을 리가 없겠죠?

그래서 결론은, 이 식으로는 올바른 답을 구할 수 없습니다.

즉, 배열수식은 먼저 IF함수로 반복,반복해서 해당되는 셀 값을 우선 다 찾고,

다른 함수를 통해 마무리하는 형태로 볼 수 있습니다.

그렇기 때문에 보통 IF는 안쪽에 들어가있고, 다른 함수가 밖(수식에서 가장 처음)에 있습니다.

책에서 배열수식 부분의 수식들을 한 번 훝어보시면 이해가 가실 겁니다.

쓰다보니 꽤 길게 썼네요. 부디 읽으셨으시길 바랍니다. 열공하시고요~~

  • *
    2012-10-30 20:30:33

    먼저 해답이라고 나온 수식을 살펴봅시다.(수식 자체만 보면 되니 절대값 기호는 다 생략했습니다.)

    =SMALL(IF(H2=LEFT(B3:B23,1),C3:C23),G3)

    위 밑줄친 배열 함수를 계산하면

    IF(H2=LEFT(B3, 1), C3) → 참이므로 C3셀인 '5:05'를 값으로 취합니다.

    IF(H2=LEFT(B4, 1), C4) → 거짓이기 때문에 값이 없죠..

    ...

    IF(H2=LEFT(B23, 1), C23) → 참이므로 C23셀인 '3:42'를 값으로 취합니다.

    즉 배열수식 결과 5분5초, 3분42초를 포함한 모든 남성들 기록들을 현재 값으로 취하고 있습니다.

    이 중에서 SMALL함수를 통해 그 중에서 G3번째, 즉 첫번째 기록만을 결과로 나타내게 됩니다.

    전형적인 답이 되겠네요.

    이제 직접 세운 식을 분석해봅시다.

    IF ( IF(H2=LEFT(B3:B23,1), SMALL(C3:C23,G3) )

    우선 위 식은 IF문이 두 번 들어간 식입니다.

    그런데 한 IF함수는 조건만 있고 인수만 있습니다. 그래서 오류가 나게 됩니다.

    오류가 나지 않기 위해서는 아래와 같이 IF를 하나만 입력하셔야 합니다.

    =IF(H2=LEFT(B3:B23, 1), SMALL(C3:C23, G3))

    이렇게 입력하시면 오류는 나지 않고 입력이 되기는 합니다...(맞는것 같기도??)

    그런데 문제는 배열수식이라는 것이죠... 배열을 한 번 풀어서 볼까요?

    =IF(H2=LEFT(B3, 1), SMALL(C3, G3))

    → 참입니다. 조건에 의해 C3 하나의 셀에 대해서 G3번째 작은 값을 취합니다?(뭔가 이상하죠?)

    =IF(H2=LEFT(B4, 1), SMALL(C4, G3)) → 거짓입니다. 그래서 값이 없습니다.

    ...

    =IF(H2=LEFT(B23, 1), SMALL(C23, G3))

    → 참입니다. 조건에 의해 C23 하나의 셀에 대해 G3번째 작은 값을 취합니다...

    여기서 G3값이 1인 경우는 오류가 나지 않게 됩니다만, 2 이상의 경우에는 오류가 발생합니다.

    값이 하나인데 그 중에서 두 번째나 세 번째로 작은 값이 있을 리가 없겠죠?

    그래서 결론은, 이 식으로는 올바른 답을 구할 수 없습니다.

    즉, 배열수식은 먼저 IF함수로 반복,반복해서 해당되는 셀 값을 우선 다 찾고,

    다른 함수를 통해 마무리하는 형태로 볼 수 있습니다.

    그렇기 때문에 보통 IF는 안쪽에 들어가있고, 다른 함수가 밖(수식에서 가장 처음)에 있습니다.

    책에서 배열수식 부분의 수식들을 한 번 훝어보시면 이해가 가실 겁니다.

    쓰다보니 꽤 길게 썼네요. 부디 읽으셨으시길 바랍니다. 열공하시고요~~

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