Chiquilin Site■12.05.16_Excel:段階的料金計算(従量料金計算)

その1:作業列を使った計算1
その2:作業列を使った計算2
その3:配列数式を使った計算
ChiquilinSite
水道料金表水道料金・タクシーメーター・コピーカウント料金……。使用量に応じて段階的に価格が変動する従量制の料金計算というのは 意外に多いように思います。ところが こういう(累進)従量料金計算については説明しているサイトがなかなか見つかりません。多分 作業列を用意してやれば何てことのない計算だからだと思いますが もうちょっとあってもよさそうなもんですけどね。今回は適応段階別の加算方法についてとりあげたいと思います。

その1:作業列を使った計算1

サンプルで用意した表は水道料金計算表です。実際には水道の口径などで料金の基準が変わるようですが 今回は1種類にしておきます。 基本料金がG2セルに E5:G13セルに範囲と単価が入っています。実のところ「以上/以下」より「超/以下」の方がやりやすいんですが 一般的にはこうだろうという書き方にしておきました。作業列版は簡単なので さっそく計算に入ります。
■I6セル:作業セル
=MAX((MIN(F5,B$5)-E5+1)*G5,0)
I13セルまでオートフィルコピー

■C5セル
=IF(B5="","",SUM(G2,I5:I13))
これでおしまいです。そりゃ説明ページなんてわざわざ作らんわな……
ページの一番上へ

その2:作業列を使った計算2

「その1」の計算方法で唯一問題があるとしたら 料金計算がいくつもある場合です。
いくつも計算する時の作業列
この場合 式は長くなりますが作業列の作り方を変えます。
■I6セル:作業セル
=(F5-E5+1)*G5
I13セルまでオートフィルコピー

■C5セル
=IF(B5="","",SUM(G$2,SUMIF(F$5:F$13,"<="&B5,I$5:I$13),
LOOKUP(B5,E$5:E$13,(B5-E$5:E$13+1)*G$5:G$13)))
これも下にコピー
こんな感じです。極端に云うなら SUMIFを3つ作れば作業列はいりませんが さすがにそれほどの計算でもないので作業列を残しています。
ページの一番上へ

その3:配列数式を使った計算

これは別にお勧めする訳じゃありませんのでさらっといきます。作業列は使いません。
■E12セル
=IF(B5="","",SUM(G$2,TEXT(B5-E$5:F$13+{1,0},"0;!0")*{1,-1}*G$5:G$13))
Ctrl + Shift +Enterで確定
以上です。
SUMをSUMPRODUCT関数にすればEnter確定になりますが それはお任せします。「超/以下」の表であれば「+{1,0}」はいりませんね。
例えば基本料金が「2500円」で「50m3超〜100m3以下が40円」「100m3超:30円」なら
=SUM(2500,TEXT(A1-{50,100;100,999},"0;!0")*{1,-1}*{40;30})
こうなります。
→参考ファイル(051.xlsx)
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system