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가지 식에서 어떤 차이점 때문에 제가 세운 수식이 오류가 나는지 감이 오질 않아서
이렇게 질문드립니다~~*
먼저 해답이라고 나온 수식을 살펴봅시다.(수식 자체만 보면 되니 절대값 기호는 다 생략했습니다.)
=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는 안쪽에 들어가있고, 다른 함수가 밖(수식에서 가장 처음)에 있습니다.
책에서 배열수식 부분의 수식들을 한 번 훝어보시면 이해가 가실 겁니다.
쓰다보니 꽤 길게 썼네요. 부디 읽으셨으시길 바랍니다. 열공하시고요~~