논리/엑셀 프로그래밍

근사값을 임의의 갯수 만큼 추출

섬그늘 2008. 11. 13. 15:45

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에 근접한 값을 구함. 구하고자 하는 개수를 초과하면 작업을 마침. 이 수식을 쓰면 데이타베이스가 정렬되어 있지 않아도, 제시된 수치의 근사값을 원하는 수량 만큼 찾는데, 수식이 복잡하여 실전적이지 않다는 단점은 있음 --+