B |
C |
D |
E |
F | |
2 |
기준 |
개수 |
결과 |
차이 |
34.92 |
3 |
50 |
5 |
50.8 |
0.8 |
39.41 |
4 |
|
|
47.29 |
-2.71 |
43.5 |
5 |
|
|
54.05 |
4.05 |
47.29 |
6 |
|
|
43.5 |
-6.5 |
50.8 |
7 |
|
|
57.05 |
7.05 |
54.05 |
8 |
|
|
|
|
57.05 |
9 |
|
|
|
|
39.41 |
10 |
|
|
|
|
43.5 |
11 |
|
|
|
|
47.29 |
D3 =IF(ROW()-ROW(D$3)+1>C$3,"",SUM(IF(ABS(B$3-F$2:F$11)=MIN(ABS(B$3-F$2:F$11)),F$2:F$11/COUNTIF(F$2:F$11,F$2:F$11),0))) ; 입력 후 CTRL+SHIFT+ENTER
D4 =IF(ROW()-ROW(D$3)+1>C$3,"",SUM(IF(ABS(B$3-F$2:F$11)=MIN(IF(D3<>F$2:F$11,IF(ABS(B$3-F$2:F$11)>=ABS(D3-B$3),ABS(B$3-F$2:F$11),MAX(F$2:F$11)),MAX(F$2:F$11))),F$2:F$11/COUNTIF(F$2:F$11,F$2:F$11),0))) ; 입력 후 CTRL+SHIFT+ENTER. D4 잡아 아래로 데이타 행 만큼 복사하면 작업 끝.
간단한 설명 : 구하고자 하는 값(B3)과 데이타베이스의 값을 하나하나 비교, 그 차이의 절대값을 ABS로 구해 그 중 가장 작은 값을 MIN+배열수식으로 구한 후 그 차이가 가장 작을 때의 값을 SUM으로 구함(D3). 같은 값이 있을 수 있으므로 COUNTIF로 걸러냄. D4부터는 바로 직전 구했던 값을 제외하고 직전의 차이 절대값 보다 같거나 큰 데이타를 대상으로 같은 작업을 하여 B3에 근접한 값을 구함. 구하고자 하는 개수를 초과하면 작업을 마침. 이 수식을 쓰면 데이타베이스가 정렬되어 있지 않아도, 제시된 수치의 근사값을 원하는 수량 만큼 찾는데, 수식이 복잡하여 실전적이지 않다는 단점은 있음 --+
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
SUMPRODUCT 유동 참조 (직전 행 찾기) (0) | 2008.11.13 |
---|---|
다중조건 맞춤 출력 (0) | 2008.11.13 |
다른 화일의 체크한 행만 표시 (0) | 2008.11.13 |
구간별 다른 변수 적용 계산 (0) | 2008.11.13 |
구간별 데이타 합계 (SUMPRODUCT) (0) | 2008.11.13 |