Q&A

  • 엑셀 검색한걸 계산하는 방법좀 알려주세요..
엑셀에서 데이터를 그리드로 가져오는것이랑
그 엑셀에 값을 가지고 계산을 하는것도 다 했습니다..

그런데 문제는
원레 엑셀에 있는 데이터는
검색 단위가 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는 따로 엑셀을 불러 내기 위해 따로 만든 함수입니다.

좀 이해 하기 힘드실 수도 있는데..
위의 코드가 이해가 안 가신다면..
그냥... 그 위에 질문했던 식을 이용해서
간단하게 추출하는 방법 만이라도 알려주세요
머가 잘못
0  COMMENTS