2008年10月15日 星期三

[EXCEL] 找零錢

 
  有 50, 10, 5, 1 塊的銅板,要找零錢 89 塊,要幾個 10 元,幾個 5 元銅板,才能湊出來?當然你可以針對各幣值一個一個去設計公式,不過這裡有更簡單的通用公式,給你參考。

##CONTINUE##
  如上圖,如果有 1000, 500, 100, 50, 10, 1 六種幣值,要湊出 14,523 元,要怎麼湊?

  對最大幣值而言,比較簡單,金額直接除以幣值,再取整數即可,B2 =INT(A2/B$1)。公式可直接往下複製。

  對其他幣值而言,其實也不難,金額先減去較大幣值的金額,再除以幣值,取整數即可。以 D2 的 100 元為例,14523-(1000*14+500*1)=23,INT(23/100)=INT(0)=0,完成。剛好,(1000*14+500*1) 這個算式可以用 SUMPRODUCT() 來計算,所以 D2 的公式就成為

  =INT(($A2-SUMPRODUCT($B$1:C$1,$B2:C2))/D$1)

  這個公式已經考慮過相對位址問題,所以可以直接複製到 C2:Gx 的所有位置。

  這個通用公式的好處是,它可以適用於任何幣值組合,只要遵守由大到小的順序即可。例如,如果有某個幣值剛好沒銅板了,我們只要把那個幣值整欄刪除即可,公式不必修改就可以正常換算。

  例題中的 A5:F7 是沒有 500 元紙幣的狀況。只要幣值所在列沒變,公式就不須做任何修改,當然,因為 A5:F7 幣值所在列已經從第1列變成第5列,所以公式也要配合修改,C6 的公式為

  =INT(($A6-SUMPRODUCT($B$5:B$5,$B6:B6))/C$5)

  這類問題,在台灣相對簡單,因為台灣的幣值都是 5 或 10 倍為基礎,比較好換算。(或者是我們已經習慣這種換算法了?)像上次我去美國出差,美國的銅板有 quarter,也就是美金 0.25 元,害我每次找零錢都會打結。如果用 Excel 來算,同樣的公式,只要更改幣值,一樣可以適用。例題中的 A9:G11 是美金銅板換算的狀況。

0 意見: