2008年2月19日 星期二

[EXCEL] 區間累加

 
  相關函數:SUMPRODUCT()

  網友丫霞問了一個問題,是關於不同區間的距離要採用不同的計費單價。這類型的問題應該可以再分為兩類,詳細說明如下。

##CONTINUE##
  第一種,是不同「距離」採用不同單價。例如,
  • 送貨距離在 10 公里內,每公里要價 100 元;
  • 送貨距離在 20 公里內,每公里要價 110 元。
  這種算法,當送貨距離是 10 公里時,總價是 100*10=1000;當送貨距離是 11 公里時,總價是 110*11=1210

  第二種,是不同「距離區間」採用不同單價。例如,
  • 送貨距離在 10 公里內,每公里要價 100 元;
  • 送貨距離在 11-20 公里內,每公里要價 110 元。
  這種算法,當送貨距離是 10 公里時,總價是 100*10=1000;當送貨距離是 11 公里時,總價是 (100*10)+(110*1)=1110


  要採用第一種算法,可以套用之前介紹過的「多重條件查表法」的公式,先建立一個區間單價表,如上圖 F:H 欄,再利用 SUMPRODUCT() 公式找出一個同時符合「距離 >= 區間下限」「距離 <= 區間上限」的區間,傳回其區間單價,再直接乘上距離即可。如上圖 C 欄,C2 公式為

=SUMPRODUCT(--(B2>=$F$2:$F$6),--(B2<=$G$2:$G$6),$H$2:$H$6)*B2

  了解了第一種算法後,再做一些變化,就可以算出第二種算法的答案。先用 SUMPRODUCT() 公式找出所有符合「距離 > 區間上限」的區間單價,乘上各個區間的範圍,算出各個區間的價格總和;再用 SUMPRODUCT() 公式找出一個同時符合「距離 >= 區間下限」「距離 <= 區間上限」的區間單價,乘上距離在這個區間佔的範圍,最後再加總即可。如上圖 D 欄,D2 公式為

=SUMPRODUCT(--(B2>$G$2:$G$6),($G$2:$G$6-$F$2:$F$6+1)*$H$2:$H$6)+
SUMPRODUCT(--(B2>=$F$2:$F$6),--(B2<=$G$2:$G$6),(B2-$F$2:$F$6+1)*$H$2:$H$6)

  當然,區間上下限及單價內容可以隨時更改,不必修改公式,但是要注意區間應該要連續,才不會發生找不到區間的情形。

0 意見: