- 최초 작성일: 2005-04-19
- 최종 수정일: 2026-09-26
- 조회수: 27 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 가장 가까운 값 찾기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
지난 몇 강좌동안 별로 머리가 안 아픈 것을 해 보았으니 이번 시간에는 조금
머리가 아플 법한 내용을 살펴 보겠습니다. 쿵~~(← 간 떨어지는 소리 ^^;)
책도 너무 쉬운 것만 계속 보면 발전이 없듯이 우리의 두뇌도 가끔은 적당한
자극이 필요한 법입니다(실은 그리 복잡하지 않으니 안심하시기 바랍니다).
아래와 같은 데이터가 있습니다.
B열에 입력되어 있는 값들 중에서 여기에 입력된 값과 가장 가까운 값을
찾으려면 어떻게 해야 할까요?
수식이나 VBA의 힘을 빌기 이전에… 그냥 작업 순서를 먼저 생각해 보세요.
가장 가까운 값 찾기
핵심 요약
- 비교할 값과 찾을 값을 준비합니다.
- 각 값과 찾을 값의 차이를 ABS로 계산합니다.
- SMALL, INDEX, MATCH를 배열 수식으로 조합합니다.
가장 가까운 값 찾기 예제
| 비교할 값 ① | GAP(①-②) | |||
|---|---|---|---|---|
=INT(RAND()*100) | =ABS(B23-$F$23) | 찾을 값 ② | 50 | |
=INT(RAND()*100) | =ABS(B24-$F$23) | 가장 가까운 값 | =INDEX(B23:B42,MATCH(SMALL(ABS(F23-B23:B42),1),ABS(F23-B23:B42),0)) | |
=INT(RAND()*100) | =ABS(B25-$F$23) | |||
=INT(RAND()*100) | =ABS(B26-$F$23) | |||
=INT(RAND()*100) | =ABS(B27-$F$23) | |||
=INT(RAND()*100) | =ABS(B28-$F$23) | |||
=INT(RAND()*100) | =ABS(B29-$F$23) | |||
=INT(RAND()*100) | =ABS(B30-$F$23) | |||
=INT(RAND()*100) | =ABS(B31-$F$23) | |||
=INT(RAND()*100) | =ABS(B32-$F$23) | |||
=INT(RAND()*100) | =ABS(B33-$F$23) | |||
=INT(RAND()*100) | =ABS(B34-$F$23) | |||
=INT(RAND()*100) | =ABS(B35-$F$23) | |||
=INT(RAND()*100) | =ABS(B36-$F$23) | |||
=INT(RAND()*100) | =ABS(B37-$F$23) | |||
=INT(RAND()*100) | =ABS(B38-$F$23) | |||
=INT(RAND()*100) | =ABS(B39-$F$23) | |||
=INT(RAND()*100) | =ABS(B40-$F$23) | |||
=INT(RAND()*100) | =ABS(B41-$F$23) | |||
=INT(RAND()*100) | =ABS(B42-$F$23) |
가장 가까운 값 찾기
B23 셀부터 B42 셀에 들어있는 각 값들을 F23 셀의 값과 하나하나 비교를
한 다음, 두 값의 차이가 가장 적게 나오는 값을 고르면 되겠지요? 이것을 수식으로 표현하면 바로 이렇게 되는 것입니다.
{=INDEX(B23:B42,MATCH(SMALL(ABS(F23-B23:B42),1),ABS(F23-B23:B42),0))}찾을 값보다 큰 수이든 작은 수이든 가장 가까운 값을 구하기 위해 ABS 함수를 사용하여 절대값을 가져온 다음, Small 함수를 사용하여 앞 단계에서 구해진 값이 무엇인지 파악하고, 그 결과값들을 Index와 Match 함수를 조합/사용하는 것입니다.
배열 수식이므로 수식을 입력한 다음 Ctrl + Shift + Enter 키를 함께 눌러서 마무리 한다는 것, 잊으시면 안 되겠지요?
오늘은 여기까지…
마치며
비교할 값과의 차이를 ABS로 구한 뒤 SMALL, INDEX, MATCH를 조합하면 가장 가까운 값을 찾을 수 있습니다. 배열 수식으로 입력해야 한다는 점이 중요합니다.