• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数を利用した「引き算」が思うように計算できません。)

変数を利用した引き算の計算方法

BumeshiOKの回答

  • BumeshiOK
  • ベストアンサー率92% (12/13)
回答No.7

全体の構造が分からないので、あくまでサンプルレベルですが、 ◎a~gまでのテキストフィールドが設置されているフレームのスクリプト a = b = d = e = ""; function Keisan() {//計算を実行する関数 var a_num,b_num,d_num,e_num; a_num = a = (a == "") ? 0 : getNumber(a); b_num = b = (b == "") ? 0 : getNumber(b); d_num = d = (d == "") ? 0 : getNumber(d); e_num = e = (e == "") ? 0 : getNumber(e); c = c_num = a_num - b_num; f = f_num = d_num - e_num; g = c_num + f_num; return g; } function getNumber(val){//HTMLタグを削除して、数値化したものを返す関数 if(val.indexOf("<") > -1){ val = val.toUpperCase(); val = val.substring(val.indexOf('">',val.indexOf('KERNING')) + 2,val.lastIndexOf('</FONT'));//HTMLタグ以外を抽出 } return Math.abs(val); } ◎同じフレームのボタンに記述するスクリプト on(Release){ Keisan(); } 上記のようにフレームスクリプトとして1箇所と、 そのフレームに配置されているボタンにひとつ。 という構成で如何でしょうか なお、HTMLタグを削除する関数(getNumber関数)は必ず必要です。

mcx
質問者

補足

2回目のスクリプトで期待通りの結果が表示されました。 ただ、全体像をお知らせしないままでのスクリプトでしたので、次のようなことが残りました。改めて全体像をお知らせしたうえで、お知恵を拝借させてください。 《全体像》 目的:1週間の売上データの作成 構成: (1)フレームの#1~#7に月曜日~日曜日までの画面を設定 (2)フレーム#1に月曜日分の、  男子用小物  a:売上 b:値引 c:実質売上  女子用小物  d:売上 e:値引 f:実質売上  合計実質売上:g    男子用小物累計  h:売上 i:値引 j:実質売上  女子用小物累計  k:売上 l:値引 m:実質売上  合計実質売上累計:n  を表示させます。 (3)フレーム#2に火曜日分の、  男子用小物  a1:売上 b1:値引 c1:実質売上  女子用小物  d1:売上 e1:値引 f1:実質売上  合計実質売上:g1  を表示後、累計欄は「月曜日分+火曜日分」として  男子用小物累計  h1=h+a1:売上 i1=i+b1:値引 j1=j+c1:実質売上  女子用小物累計  k1=k+d1:売上 l1=l+e1:値引 m1=m+f1:実質売上  合計実質売上累計:n1=n+g1  を表示させます。 (4)同様に#7フレーム(日曜日分)までを作成いたしますが、最終の日曜日分の累計は各項目の7日分の合計金額を表示させることになります。 《私の作った追加スクリプト》→ フレーム#1の「c」を表示させるボタンに、  on (release) {    Keisan ();    h = a_num;    i = b_num;    j = g;    } を追加しました。(「f」「g」も同様です。) 《スクリプト動作の結果》 (1)「h」「i」「k」「l」は「undefined」でした。→ 「a」「b」「d」「e」を参照させたつもりですが、「a」~「e」に数値「0」が代入されていて「h」~「l」が未定義な値、といったところが不明です。 《その他の不具合》 (2)月曜日分を作成後、フレーム#2に移動して火曜日分を作成するわけですが、フレーム#2に移動後フレーム#1に戻ると「a」「b」「d」「e」に代入した数値が表示されず「空欄」になってしまいます。但し、「c」「f」「g」の合計金額は残って表示されています。 → 「a」「b」「d」「e」等既に記入した数値は残ってほしいのです。 以上長くなりましたが(1)(2)への対処方法を改めて教えていただけましたら幸いです。 宜しくお願いいたします。

関連するQ&A

  • エクセル2003での時間の引き算

    Excel2003での時間の引き算について質問です。    A   B    C 1 4:00  4:00  1:00 =IF(A1>=B10,A1-B1,C1) の計算をすると####と表示されてしまいます。   =0:00と表示するにはどのようにしたら良いでしょうか? 表示形式はユーザー定義で〔h〕:mmとなっています。 よろしくお願いします。

  • フレーム間移動時に変数を保存しておく方法

    フレーム間移動時に変数を保存しておく方法 Windows-XP、Flash8 で作業しています。 フレーム#1に下記の算式を作ってあります a - b = c   h - i → j d - e = f    k - l → m c + f = g        n この内 a b d e は「テキスト入力・変数名はそれぞれ a b d e 」に設定して、c f g h i j k l m n は「ダイナミックテキスト・変数名はそれぞれ「c f g …… n」と設定しました。 a~gで計算した結果をh~nに代入して「計算の控え」とします。 同じくフレーム#2には下記の算式を作りました。 a1 - b1 = c1   h1 - i1 → j1 d1 - e1 = f1    k1 - l1 → m1 c1 + f1 = g1         n1 a1~e1は「テキスト入力・変数名はそれぞれ a b d e 」、g1~n1は全て「ダイナミックテキスト・変数名はg1 h1 …n1」と設定します。そして、a1~g1で計算した結果は、フレーム#1のh~nでの各項目と「足し算」をして、フレーム#2のh1~n1に「累計額」として表示させます。 即ち、各フレームで「a~g」の計算をして、フレームが増えてゆく毎に前フレームの「a~g」欄を累積加算して「h~n」欄に累計を表示してゆくデータを作っています。 ■フレームのスクリプトに、 a = b = d = e = ""; function Keisan() { var a_num,b_num,d_num,e_num; a_num = a = (a == "") ? 0 : getNumber(a); b_num = b = (b == "") ? 0 : getNumber(b); d_num = d = (d == "") ? 0 : getNumber(d); e_num = e = (e == "") ? 0 : getNumber(e); c = c_num = a_num - b_num; f = f_num = d_num - e_num; g = c_num + f_num; return g; } function getNumber(val){ if(val.indexOf("<") > -1){ val = val.toUpperCase(); val = val.substring(val.indexOf('">',val.indexOf('KERNING')) + 2,val.lastIndexOf('</FONT')); } return Math.abs(val); } ■それぞれの「=」にボタンスクリプトとして、 on(Release){ Keisan(); } を書き込み、「a b d e」「a1 b1 d1 e1」が空欄時であっても「Nan」の出現を防ぐ処理をいたしました。 ところが、「フレーム#1 → フレーム#2」で「フレーム#2」のデータ作成後、「フレーム#1」に戻ると「フレーム#1」でのデータの内「a b d e」が消去されてしまいます。 フレームスクリプトでの「a = b = d = e = "";」が理由と思われますが、「フレーム#1」に戻った時でも「a b d e」のデータを残す必要があります。 【フレーム間移動時に変数を保存しておく方法】での処理が必要のようですが、その処理方法がわかりません。ご教授頂ければと思います。

    • ベストアンサー
    • Flash
  • Excelの引き算のやり方を教えて下さい

    A列の数字からB列の数字を引き算した数値をC列に表示させたいのですがどうすればいいのでしょうか?ちなみに行は400行ほどあり、1行目は項目が書いてあるので数字が入っているのは2列目からです。

    • ベストアンサー
    • Mac
  • IF関数についてです

    A2のセルには=T26-B41の引き算されるようになっています。 その引き算の結果が0の場合、空欄と表示されます。 C2のセルに=IF(A2="","","○")と入れています。A2が空欄だと○と表示されないようにしているのですが空欄でも○と表示されます。なぜなのでしょうか?

  • テキスト入力の数字とダイナミックテキストの数字の足し算

    Flash8 で集計表を作っています。 a1(ボタン)  a2(静止テキストと変数)  a3(ダイナミックテキストと変数)、 b1(ボタン)  b2(静止テキストと変数)  b3(ダイナミックテキストと変数)、 c1(ボタン)  c2(テキストと変数)     c3(ダイナミックテキストと変数)、 d1(ボタン)  d2 (ダイナミックテキストと変数) d3(ダイナミックテキストと変数)、 を設定後、例えば a1/b1 をクリックして、a2/b2 の数字を a3/b3 に表示、ただし c2 のみは「任意の数字を記入後」c1 をクリックして c3 に表示させています。 d2 d3 は「ans」を利用して合計を表示します。 this.c_btn1.onRelease = function () { c3 = (c2); } とスクリプトを書いて処理していますが、「c3」に代入されるデータが「数字」ではなく「文字列」になるようで、d1 をクリック後に「d3」に合計が表示されません。 「c2」「c3」の関係で、「数字」を確実に「c3」へ渡す方法を教えて下さい。

  • 引き算するとき、以下のどのやり方で計算するのが早いですか?

    暗算で計算する場合です。例題は54-28です。 A 筆算で計算するときのように 14-8=6 4-2=2 26 (4-2が先でもいいです) B 54を14と40に分けて考え 14-8=6 40-20=20 20+6=26とする C 50-28=22 50は54より4小さいから、4を足して 22+4=26とする D 一の位の数をなくす 54-24=30 これから、さらに4を引いて 30-4=26 とする E 34-28 =26 F 54-30を計算して2足す これぐらいしか思い付かないのですが、3桁のくり下がり引き算などにも応用する場合も考えて、どれが効率が良いのでしょうか?

  • C# 変数を変数で指定したい

    UnityとC#でプログラミングの勉強をしている者です。 「操作する変数」を、変数を使って指定するにはどのような方法を使えば良いのでしょうか。 以下、例となります。 aという変数、およびb1、b2、b3……という変数があるとしたとき、 「a=1ならば、b1に1を代入する」 「a=2ならば、b2に1を代入する」 「a=3ならば、b3に1を代入する」…… という処理をする方法を探しています。 よろしくお願い致します。

  • 【数字ランダム】計算問題ランダム計画

    1から10の乱数を使った 足し算、引き算を考えていまして、 ダイナミックテキスト(mondai)に 式と答えを表示。 同じ数字の組み合わせの問題が続けて出るので それを回避するために、 皆様のお知恵をお借りしたいと思いました。 自分が考えている回路図は、 //乱数[0-9] randam_a = Math.floor(Math.random()*10); randam_b = Math.floor(Math.random()*10); //足し算か引き算か計算ちぇっく check = Math.floor(Math.random()*2); ※このあたりに前回のrandam_a & randam_bの 値を調べて同じならば、前回と違う値が入るまで loop処理を加える。 //足し算ならば if (check == 0){   total = randam_a - randam_b ;   mondai = String(randam_a)+"+"+String(randam_b)+"="+String(total); //引き算ならば } else if (check == 1) {    total = randam_a + randam_b ;    mondai = String(randam_a)+"-"+String(randam_b)+"="+String(total); //引き算の処理ならば }else if (check == 1){ (略してます) } という流れを考えてます。 それ以外に、いけそうな処理の流れが あれば、そのチャートも知りたいので 解説して頂けると勉強になります>< 宜しくお願いします!

    • ベストアンサー
    • Flash
  • 配列数式で平均を出すと空欄が0で計算されてしまう

      A B C D 1  1 2 1 {=AVERAGE(IF($A$1:$A$4=$C1,B$1:B$4))} 2  1 4 2 {=AVERAGE(IF($A$1:$A$4=$C2,B$1:B$4))} 3  2 6 4  2 8 上記のような数値、数式ですと、 B列すべてに数値が入力されているため、問題なく計算するのですが、 例えば、B2のセルを空欄にすると、空欄を0としてしまい、 D1の計算結果が1となってしまいます。 D1の数式を=AVERAGE(B1:B2)としますと、空欄は空欄として扱い、 計算結果は2となります。 配列数式を使った場合にも、空欄を空欄として扱い、 計算結果が2となるような方法はありませんでしょうか。 よろしくお願いします。

  • エクセルで変数を次々変えて計算させられる?

    こんばんは いくつかの変数を与えると答えが出るようなエクセルシートに、変数を変えながら与えてそれらの答えを次々求めるようなことができるでしょうか。 話を単純化すると次のような感じです。 B2, D2, F2 に変数を入れると、(関数では書けないような計算をして)その答えが、B8, C8, D8 に出るとします。 このとき、3つの変数の組み合わせをたとえば100通り設定して、おのおのある行の J,K,L 列に書くと、それをB2, D2, F2 に代入し、それぞれの組み合わせに対するB8, C8, D8 の答えが同じ行の M,N,O列に出るというようなことが可能でしょうか。 いろいろ調べてみても見つからないのですが、あればとてもありがたいのです。よろしくお願いします。