• ベストアンサー

入力された数値による計算について

関数を使う式が難しく、どうか教えてください。 金額を入力してもらい、その金額による(1)割引率%、(2)サービスする価格、(3)計算結果、というスクリプトを組まなければなりません。 入力された金額の範囲が1000円~10,000円までのものなら、(1)が5%、(2)が300円、(3)は入力された金額*(1)-(2)で、金額の範囲が上がると、(1)が7%、(2)が500円になるといった具合で、6段階ぐらいに増えていきます。 (3)の計算結果だけでなく、(1)(2)(3)すべてが出るようにするには、どのように組めば良いのでしょうか? どうか宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

 入力後、割引率、サービス価格、計算結果を表示する、ということですが、何もないところに、いきなり文字を表示することはできません。  割引率、サービス価格、計算結果表示用のテキストボックスを用意しておいて、入力があったら、各数値を表示するのがいいと思います。 ・入力の確認は、入力フィールドのonBlur/onChange、または計算ボタンなどで行います。 ・表示用フィールドにもonBlur/onChange/onKeypressなどを用意しておいて、ユーザによる書き込みがあったら、正しい値を表示し直すといいです。 ・金額による各値の変動ですが、割引率とサービス価格の配列をそれぞれ用意しておき、入力された価格に対する配列でのIndex値を、多重if文で求めればよいと思います。 凄く適当に組んでみましたが、参考にしてみてください。 <script>内 var price, lank;    // 入力価格、入力価格のランク var wari = new Array(0,5,10,15,20);  // 割引率 var serv = new Array(0,300,400,500,600);  // サービス価格 function check() {   price = eval(document.frm.tx0.value);   set_lank();   view(); } function set_lank() {   if ( price< 1000) { lank = 0; }   else if ( 1000<=price && price<10000) { lank = 1; }   else if (10000<=price && price<15000) { lank = 2; }   else if (15000<=price && price<20000) { lank = 3; }   else if (20000<=price ) { lank = 4; } } function view() {   with( document.frm ) {     tx1.value = wari[lank];     tx2.value = serv[lank];     tx3.value = price + (price * wari[lank] / 100) - serv[lank];   } } <body>内 <form name="frm">  <input type="text" name="tx0"">  <input type="button" value="計算する" onClick="check();"><p>  <font face="MS ゴシック">  割引率   <input type="text" name="tx1" onBlur="view();">%<br>  サービス価格<input type="text" name="tx2" onBlur="view();"><br>  価格    <input type="text" name="tx3" onBlur="view();"><br>  </font> </form>

garfield
質問者

お礼

分かり易い説明と、重宝なスクリプトをご回答いただいて、本当にありがとうございました。このスクリプトを加工していけば、いろいろと多用できると思います。大変助かりました。今後とも宜しくお願いいたします。

関連するQ&A

  • 同じ計算を2回させるにはどうしたら良いのでしょうか?

    始めに金額を入力してもらい、その金額を半分にしてAとB2つの商品を購入し、それぞれの購入代金と、残額がでるというスクリプトを組みたいのですが、 A * (1)Aの割引率% - (2)Aのサービス価格 = (3)計算結果、 B * (1)Bの割引率% - (2)Bのサービス価格 = (3)計算結果、 最後に残額が出る。というスクリプトです。 始めに入力された金額の範囲が 1,000円~3,000円なら、Aの(1)が5%、(2)が100円で、Bの(1)が3%、(2)が50円。 3,000円~5,000円なら、Aの(1)が7%、(2)が300円で、Bの(1)が4%、(2)が150円。 といった具合で、始めの金額によって(1)、(2)は5段階ぐらいに増えていきます。 (3)の計算結果だけでなく、(1)(2)(3)すべてが出るようにするには、どのように組めば良いのでしょうか? 初心者には難しいです。どうか宜しくお願いします。

  • エクセル関数で「数値が入力された時だけ計算対象にする」はできますか?

    毎度 質問するばかりで恐縮ですが、今回も助けてください。 お客様からの受注金額を算出しています。 【状況】 A1~A10に最大10個の商品金額を入力し、A11に合計額を出しています =SUM(A1:A10) 。 キャンペーンなどで「5%OFF」する時は別途、電卓で×0.95を計算し伝票を作っています。 【やりたい事】 A11の合計金額に対して、あるセルに「5と入力すれば5%引きになり、10と入力すれば10%引きになる」 このような仕組みを考えています。SUMの式の中に単純に組み込むと割引率のセルが「空白」のときは ×ゼロでいつもゼロ円になってしまいます・・・。 合計も出せて、必要なときに割引計算も組み入れる。こんな数式はないでしょうか。 よろしくお願いします。(ponta_024)

  • Excelの計算式について(セルに入力した数値を反映した計算式)

    Excelの計算式について質問させてください。 同じような質問がありましたらすみません。 B1=A1*B1という具合にB1に入力した数値を反映した計算結果を同じB1内に表示することは不可能でしょうか? 例えば、A1に単価100円、B1に個数という設定上で B1に個数を入力すると単価100円×個数で出た結果をそのままB1に出したいのです。 わかりにくい説明ですが宜しくお願い致します。

  • 正しい計算式は?

    C3に数量として「200」 D3に単価として「124」 E3に割引率の「5%」が入力されています。 F3に割引後の金額を入力するのですが、式がよくわかりません。 =(C3*D3)-E3は間違ってますか? 計算機ではこの式でちゃんと正しい答えが出るのですが、エクセル上では答えが違います。 なぜでしょうか?

  • Excelでこういう式が作れますか?

    セルA1に金額が入ります。B1にその金額に対する割引率が入ります。 割引率は、金額が10001~20000円なら1%、20001~30000円なら2%・・・ 100000円以上は10%という風に10段階ぐらいあります。 (10000円以下は割引なしです。) 私は下の式のように、 =IF(A1>100000,0.1,IF(A1>90000,0.09,IF(A1>80000,0.08,・・・ IF関数を沢山つなげる方法しか思い付かないのですが、 10個もつなげるとエラーになってしまって出来ませんでした。 (ヘルプを見ると7段階(?)しかつなげられない、みたいに書いてありました。) この場合、どうやったら全部の割引率を1つの式に出来るでしょうか? よろしくお願いします。

  • 割引率の計算を教えてください。

    割引率の計算を教えてください。 例えば、200円のものが100円になったとすると100÷200=0.5、0.5×100=50、50%オフと出るのですが、この計算式で「900円のものが140円になった場合」を求めると、元の定価から50%以上オフにもかかわらずちんぷんかんぷんな結果になってしまいます。 140÷900=0.1555、0.1555×100=15.55、15.55%オフ←あからさまに違う数値 【質問したいこと】 1.そもそも割引率の計算方法が間違っているのでしょうか? 2.電卓を使って答えの整合性を確かめる場合、100円×50%=200円みたいに出せる式を教えてください 3.「320円のたばこが440円になった」というような物価の上昇した率(○○パーセント値上げ)を求める式を教えてください。

  • 入力した合計数値を振り分けたい

    関数とかマクロなど理解していない初心者でエクセル2003を使用しいます。 例えば 1Aのセルに1~10個(単価50円)と入力済 2Aのセルに11~20個(単価40円)と入力済 3Aのセルに21~30個(単価30円)と入力済 1B~3Bのセルに個数欄未入力 1C~3Cのセルに金額自動計算式入力済 4Bのセルに合計個数欄未入力 4Cのセルに合計金額自動計算式入力済 とした場合、例えば4Bの合計個数に29個と入力すると、自動的に1Bに10個、2Bに10個、3Bに9個と個数が振り分けられる様にしたいのですが、できるのでしょうか?

  • 割引率の計算を教えてください

    よろしくお願いします。 割引率の計算方法を教えてください。 お店などで 定価189000円が49800円となっている場合の、割引率ですが、 1-(割引価格 / 原価) = ●●% 49800 - 189000 = 0.2 1 - 0.2 = 0.8(80%OFF) の計算方法で間違いはないでしょうか?

  • エクセルでの段階式料金の計算式を教えてください。

    エクセルでの段階式料金の計算式を教えてください。 条件 1.対象金額が200万円まではその5%を計算 2.200万超~400万までは4%を計算 3.400万超~は3%を計算 エクセルの様式 対象金額 200万円までの金額:計算式1 200万超~400万までの金額:計算式2 400万超~の金額:計算式3 合計: 例 300万円だとすると条件1と条件2による計算がされ条件3は働きません。 条件1の結果:10万 条件2の結果: 4万 条件3の結果: 0万 計算式1~3を教えてください。よろしくお願いします。

  • Excel 数値の丸め

    Excel2010を使用しておりますが、数値の丸めについて教えて下さい。 ■条件  ・Sheet1のA1セルに「10,000」、A2セルに「20,000」と入力。  ・Sheet2のA1セルに「=Sheet1!A1+Sheet1!A2」の式を入力。 ■結果  ・Sheet2のA1セルには「30,000」と表示される。 ■したいこと  ・この「30,000」という数値を「30」という数値に変更したい。 実際はSheet1には「10,000」や「20,000」の金額がたくさん入力されており、それをSheet2で集計しております。 しかし、Sheet2の合計金額が細かいため千円単位に一括して表示しなおしたいのです。 「ROUNDUP」や「ROUDDOWN」の関数を使用すれば千円単位に変更することはできますが、セル毎に入力しなければならないので、対象範囲を指定して一括で千円単位に変更できないでしょうか? という質問です。 よろしくお願い致します。