- 締切済み
この場合の計算式(関数)を教えてください!!
5回超過10回まで使用した時、1回使用ごとに20円、 10回超過20回まで使用した時、1回使用ごとに50円、 20回超過使用した時、1回使用ごとに80円。 使用回数が増える事に料金単価も増えるのですが、 以上の利用料金をエクセルで集計したいのですが、使用回数を入力するだけで、自動的にその単位ごとに計算させたいのです、どういう計算式にすればいいのでしょうか? いろいろ考えましたが、自分では解決できず質問させていただきました。 よろしくお願い致します!
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
こういう質問では次の2種類が考えられる。 例 12回使用したとき (1)50*12か (2)10*20+2*50 かどちらかです。質問で明確ですか?。 質問者は質問文章に書いたつもりかも知れませんが、私にはあいまいですが。 また1-4回の場合はどう計算するのでしょう。 明かに、この点ははっきりしてません。 (1)の方式ならVLOOKUP関数のTRUE型で出来るでしょう。 有名関数なのだがこれは知っていて、使えないと判断した質問かどうか。 (2)の方式ならユーザー関数を作る方法もあります。VBAを使いますがプログラムを組む必要があります。しかしセルには =TANKA(A1)のような式設定が出来ますし、式の複写も出来ます。 ー-- 参考(ただし段階の分け方は質問と内容は別例です) (私はIF関数の多段ネストは嫌いなので。ただしC-F列などの作業列が必要となる) 第1行は区分、第2行はその区間の単価を入力しておきます。 A-H列 区分 10 20 50 1000 計(A列) 単価*数量 単価 20 50 80 100 200 10 20 50 120 200 17200 340 10 20 50 260 340 34200 C3の式=IF($A3-SUM($C$1:C$1)>C$1,C$1,$A3-SUM($C$1:C$1)) F3まで右方向に式の複写 C3:F3の式を下方向に式複写。 H3の式=SUMPRODUCT(C3:F3,C2:F2) H3の式を下方向に式複写 ーー ユーザー関数(ただし段階の分け方は質問と内容は別です) Function tanka(a) Dim tbl(3): Dim tblb(3) tbl(0) = 0: tblb(0) = 20 tbl(1) = 20: tblb(1) = 50 tbl(2) = 1000: tblb(2) = 80 '---- t = 0 x = a For i = 1 To UBound(tbl) If tbl(i) > a Then t = t + x * tblb(i) Exit For Else t = t + tblb(i - 1) * (tbl(i) - tbl(i - 1)) x = x - tbl(i) End If Next i tanka = t Exit Function End Function
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 仮にA1が使用回数としています。 =IF(A1>20,100+500+(A1-20)*80,IF(A1>10,100+(A1-10)*50,IF(A1>5,(A1-5)*20,0)))
- Hachi5592
- ベストアンサー率36% (252/698)
No.2の回答者です。 訂正して下さい。 ~セル「A1」に回数が入るとすると、 ↓ ~セル「A2」に回数が入るとすると、
- n_na_tto
- ベストアンサー率70% (75/107)
5回超過10回まで使用した時、【5回からの超過分】1回ごとに20円、 10回超過20回まで使用した時、【10回からの超過分】1回ごとに50円、 20回超過使用した時、【20回からの超過分】1回ごとに80円。 の場合は... __A__B_ 1__5__0_ 2__6__20_ 3__9__80_ 4_10_100_ 5_11_150_ 6_19_550_ 7_20_600_ 8_21_680_ B1 =IF(A1>10,IF(A1>20,80*A1-1000,50*A1-400),IF(A1>5,20*A1-100,0)) 下方向・↓
- Hachi5592
- ベストアンサー率36% (252/698)
ご質問では5回までの金額が明示されておりませんが、5回までは1回10円とし、セル「A1」に回数が入るとすると、 =IF(A2<=5,A2*10,IF(A2<=10,A2*20,IF(A2<=20,A2*50,A2*80))) となります。 5回までを10回までと同じとすると、 =IF(A2<=10,A2*20,IF(A2<=20,A2*50,A2*80)) となります。 15回使用して10回まで分は20円、残りの5回は50円と言うことが 無ければこれでいいです。
- goo39
- ベストアンサー率36% (13/36)
とりあえずIF関数で =IF(○>=20,○*80,IF(○>=10,○*50,IF(○>=5,○*20,0)))