엑셀에서 데이터를 그리드로 가져오는것이랑
그 엑셀에 값을 가지고 계산을 하는것도 다 했습니다..
그런데 문제는
원레 엑셀에 있는 데이터는
검색 단위가 100, 200, 300 이렇게 되서
그러한 검색단위를 콤보박스에 있는 것으로 선택을 해서
그 값들로 엑셀에 있는 데이터를 불러내서 계산하는건데요
문제는 제가 100이나 200이 아닌
122이나 이런 그 사이값으로 보간법을 이용해서
값을 찾아야 한다는 겁니다.
예를 들면,
100에 값이 50이고 200에 값이 60일때
입력값이 150이라고 하면
결과 값은 50 + (150-100)/(200-100)*(60-50) = 55
즉 55가 추출되야 합니다.
그래서 제가 if문으로
<!--CodeS-->
item_res := 0;
if (strtofloat(item_numself.text) > 25) and (strtofloat(item_numself.text) < 50) then begin
l := (0 + 1 ) * 3 + rg_complexity.itemindex;
m := (1 + 1 ) * 3 + rg_complexity.itemindex;
//complexity는 세단계로 선택된 옵션에 따라 값이 다릅니다.
//item_numself는 기존 선택된 100이나 200이 아닌 임의로 입력한 수 입니다.
//l과 m은 선택된 옵션에 따라 엑셀에 있는 셀을 선택하는 것입니다.
//l이 25이고 m이 50에 해당되는 셀을 선택하는 것입니다.
item_res := strtofloat(get_value(grid_type,arg_task,l))
+ (((strtofloat(item_numself.text)-25)/(50-25))
* (strtofloat(get_value(grid_type,arg_task,m))
- strtofloat(get_value(grid_type,arg_task,l))));
end
else if (strtofloat(item_numself.text) > 50) and (strtofloat(item_numself.text) < 100) then begin
l := (1 + 1 ) * 3 + rg_complexity.itemindex;
m := (2 + 1 ) * 3 + rg_complexity.itemindex;
item_res := strtofloat(get_value(grid_type,arg_task,l))
+ (((strtofloat(item_numself.text)-50)/(100-50))
* (strtofloat(get_value(grid_type,arg_task,m))
- strtofloat(get_value(grid_type,arg_task,l))));
end
else begin
l := (item_num.ItemIndex + 1 ) * 3 + rg_complexity.ItemIndex;
item_res := strtofloat(get_value(grid_type,arg_task,l));
end;
<!--CodeE-->
위와 같이 짰는데요
모든 값들이 0으로 나옵니다 ㅠㅠ
get_value는 따로 엑셀을 불러 내기 위해 따로 만든 함수입니다.
좀 이해 하기 힘드실 수도 있는데..
위의 코드가 이해가 안 가신다면..
그냥... 그 위에 질문했던 식을 이용해서
간단하게 추출하는 방법 만이라도 알려주세요
머가 잘못