• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:相互に連動して値の変化するセル(エクセルVBA))

相互に連動するセルを持つ売上シミュレーション

このQ&Aのポイント
  • Excel VBAを使用して相互に連動するセルを持つ売上シミュレーションを作成したいです。
  • 具体的には、総売上を基準にして売上の内訳を入力し、一方の値が変化すると他方の値も自動的に変化するような仕組みです。
  • このようなシミュレーションを実現する方法について教えてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

とりあえず、VBAで実現する為のサンプルコードを提示します。対象シートモジュールに入れてください。 A1とB1の間で相互に連動しています。 Private Sub Worksheet_Change(ByVal Target As Range)   Application.EnableEvents = False   If Target.Address = "$A$1" Then     Range("B1") = Range("A1") * 100   ElseIf Target.Address = "$B$1" Then     Range("A1") = Range("B1") / 100   End If   Application.EnableEvents = True End Sub 途中のApplication.EnableEvents = False/Trueは、無くても良いんですが念のため……。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>売上のシミュレーションができるものを考えているのですが やりたいことはわからないでもないですが >左のセルを7500にすると右が75になり、右のセルを55とすると左が5500になるようなものです。 売上を増やすと合計の売り上げも増えるので 75%ではなくなります。 構成比を55%と変更したら、ほかの構成比も変わります。 入力する度に、合計の金額(比率も)が変わりますよね。 売上の目標などを設定されていると思いますが、一例として   A     B      C      D 1目標売上 10000    決定総売上 2 3 品目   設定金額  設定比率  決定金額 4生鮮食品  6500 5 衣類   2000 6 家具           0.1 ・・・ と準備したとして D4セルに =IF(B4="",B$1*C4,B4) といれて下へコピーしておいて B列、或いは C列のいずれかに 数値を入れます。 金額を決定するのに、比率を優先したのか、金額を優先したのかわかります。 D1セルに =SUM(D4:D100)とか入れておいて目標金額に合わせる為に どれかの金額、或いは比率を合わせる必要があるかどうか など判断されては如何でしょうか。

senkou15
質問者

お礼

代替案のご提示ありがとうございます。 お返事遅れて申し訳ありませんでした。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで求めたセルの左隣りのセルの値を返したいです

    お世話になります INDEXとMatchを使い行の一番右(左から順にセルが埋まるので右端のセルが一定では無い)の値を返すようにしました。以下です。 しかし、一番右から2番目のセルの値(求めたものの左隣り)もほしいのです。 その場合はどうしたらよいのでしょうか? =INDEX(1:1,MAX(IF(COUNT(1:1),MAX(MATCH(MAX(1:1)+1,1:1,1))),IF(COUNTIF(1:1,"*"),MATCH("",1:1,-1)))) 宜しくお願い致します。

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • EXCELでセルの値が変化したときだけにマクロ実行

    教えてください。 EXCELのA1セルの値が1→0に変化したときにMacro1を実行、0→1に変化したときにMacro2を実行したいと思い、以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に打ちました。 そうしたところキーボードからA1セルに1や0を打ち込むとMacro1・Macro2を実行するのですが。A1セルに関数式を入れ自動で1→0・0→1に変化してもMacro1・Macro2が実行されません。この場合どう修正すればMacroが実行されるようになりますか? ※ちなみにA1セルの関数式はある条件を満たしたら1、そうでない時0という式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target.Value = 0 Then Macro1 End If If Target.Address = "$A$1" And Target.Value = 1 Then Macro2 End If End Sub

  • 列の値と一致するシートを選び、指定セルをコピぺする

    マクロの勉強をしている初心者です。   タイトルにありますように、あらかじめ列に入力する値と一致するシートを検索し、そのシートの中の所定の場所にあるセルの値をひろう、というマクロをつくりたいのですがご教示頂けないでしょうか。 わかりづらいので例を画像を添付します。 (手書きですみません。) まず、左のbookと右のbookは別であり、右は読み込み用で、左bookに入力をしていくものです。 左bookの売上げ(赤塗)、目標(青塗)という部分に、右bookのというセルの場所の値をコピペすることを希望です。 毎回人の入れ替わりが頻繁にあるため、Aと同じ値のシートを選ばせるというところからプログラムさせたいです。左bookは上から田中、山下、と並んでいますが、その都度何行目に誰がくるかはかわります。 右bookのコピーしたいセルの場所(B列6行目、C列6行目)はどのシートも変わりません。 恐れ入りますがご教示の程宜しくお願いします。

  • 横方向の表から条件のあう最も左よりのセルの値を返す

    横方向の表から条件のあう最も左よりのセルの値を返す方法が知りたいです。 具体的に、表で説明します。 表は、2行11列の横の表です。 1行目には、0か1のどちらかの数字が入っています。 表の一番左(A1)は必ず0です。0の値は右方向へ連続して続き、途中で値が1になります。その後1がつづき、また0になります。 やりたいことは、1行目の値が1の場合の2行目のセルから、2行目の一番左よりのセルの値を返すことです。 (図の場合ですと、D2に該当するので、「5」になります。) 補足です。 表は、2行45列です。 表は全部で72個あります。 もしも、複数の関数を同時に使う場合は、できるだけ、小分けにして下さい。 どうぞよろしくお願いします。

  • ExcelのVBA。public変数の値が消える

    VBAについて。Excelの2003や2007を使っています。標準モジュールで public 変数を定義しました。 ユーザーformを使い、パブリック変数に値を入れたり変更し、標準モジュールに戻ったとき、そのpabulic変数が resetされてしまっている事があります。全く同じマクロで、この現象が起こることと、起こらないことがあります。excelの2003でも2007でも、同じ現象が起こります。簡単なマクロで再現性のある具体的なものを示したいと思い、試しましたが、できませんでした。簡単なマクロでは、きちんとパブリック変数は保持されています。問題のあるマクロはかなり長いものなので、とても示せません。問題がどこにあるのかわかりません。このマクロで不都合があるという具体的なマクロを示すことができない状態での質問で、申し訳ありません。 また、このようなプログラミングをしていて思ったのですが、ユーザーフォームに対してユーザーが任意の引数を渡す方法あるいは、ユーザーフォームから引数を受け取る方法はあるのですか?今は、pubulic変数を用いたり、具体的なセルに値を代入したりしていますが、どう考えてもそれはエレガントではないし、汎用性もないと思います。引数で引き渡すのが一番綺麗でいいとは思うのですが、それが可能かどうかわかりません。

  • Excel2003 2つのシートから相互にセルの値を変更したいのですが

    Excel2003を使用して2つのシートにあるセルの値を相互に変更できるようにしたいのですが。 例えば Sheet2 のセル A1 に =Sheet1!A1 と入力しておけば Sheet1 のセル A1 に 80 と入力すると Sheet2 のセル A1 は 80 と表示されますが,この状態で Sheet2 のセル A1 に別の値を入力すると,もう Sheet1 のセル A1の値を参照しなくなってしまいます。 そこで教えていただきたいことがあります。 Sheet1 のセル A1 に値(例えば80)を入力すると Sheet2 のセル A1 の値も同じ値(例えば80)になり,逆に Sheet2 のセル A1 に値(例えば80)を入力すると Sheet1 のセル A1 の値も同じ値(例えば80)になるように相互に値が変化できるようにしたいのです。 具体的に私がしたいことは (1) Sheet1 ~Sheet6 の A列 には同じ40人の名簿を使う。 (2) Sheet1 の B列 には国語の得点,同様に Sheet5 まで社会,数学,理科,英語の得点を入力。(本来は複数のテストの合計得点として, K列 にしたいのですが,今回は B列 ということでお願いします。) (3) Sheet1 ~ Sheet5 のセル D1 にそれぞれの教科の合格に必要な得点を入力。 (4) Sheet1 ~ Sheet5 の C列 には =if(B2>=D1,"○","×") のような数式を入力し,合格なら○,不合格なら×を表示するようにする。 (5) Sheet6 の B列 ~ F列 にはそのぞれの教科の○,×が参照されるようにし,B列 ~ F列の42行目にそれぞれの教科の合格に必要な点数が参照されるようにする。 (1)~(5)をすれば, Sheet1 ~ Sheet5 を見れば教科ごとの合格者が分かり, Sheet6 を見たときに誰がどの教科で合格か不合格か分かります。 Sheet6 の全教科の合格者数をみて,それぞれの教科の合格に必要な点数を上げたり,下げたりしたいのです。 Sheet1 ~ Sheet5 に戻れば,合格に必要な点数の上げ下げが可能なのですが, Sheet6の B列 ~ F列 の42行目でも合格に必要な点数の上げ下げをできるようにしたいのです。もちろん Sheet6 で合格に必要な点数を上げ下げしたときには, Sheet1 ~ Sheet5 の合格に必要な点数をも反映されるようにしたいのです。 長文で分かりにくいかもしれませんが,いい方法があれば教えてください。よろしくお願いします。

  • 入力名を参照して右ヘ18個目の値をたのセルにコピー

     セル地U10からU39の列にH14.H15.H16・・・・・・・・・・・・・・H43(平成6年、平成7」とかの意味です)。この列の範囲の中で「H14」~とかが、1行上がったり、2行下がったりするので、行が変化しても、その時点の「H14」の行のセルの右へ18個目のセルの値をQ55にコピーしたい。  同じように「H15」の行のセルの右へ18個目のセルの値をQ56・・・・・・・・・・・(順に下がっていき)「H43」の行のセルの右へ18個目のセルの値をQ84と順に上から貼り付けたいのですが よろしくお願いします。

  • 入力名を参照して右ヘ18個目の値をたのセルにコピー

    セル地U10からU39の列にH14.H15.H16・・・・・・・・・・・・・・H43(平成6年、平成7」とかの意味です)。この列の範囲の中で「H14」~とかが、1行上がったり、2行下がったりするので、行が変化しても、その時点の「H14」の行のセルの右へ18個目のセルの値をQ55にコピーしたい。  同じように「H15」の行のセルの右へ18個目のセルの値をQ56・・・・・・・・・・・(順に下がっていき)「H43」の行のセルの右へ18個目のセルの値をQ84と順に上から貼り付けたいのですが エクセル2003 よろしくお願いします。

  • セルの変化があった日付を別のセルに表示することはできますか?

    セルの変化があった日付を別のセルに表示することはできますか? Excel 2007を使用しています。 あるセルに条件付き書式で数式の値によりセルを塗りつぶす書式に設定しています。 具体的にはそのセルが塗りつぶされるタイミングはある数値以下で塗りつぶされ、 以上になると塗りつぶしなしになるような条件です。 質問としては上記のセルが塗りつぶされた日付を別のセルに表示したく又、塗りつぶし が解除されたら日付の表示も消したいのですが… このような事がエクセルでできるのでしょうか?どなたかよろしくお願いいたします。