• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 変数?について)

エクセルで変数を使用して計算する方法

このQ&Aのポイント
  • エクセルで変数を使用して計算する方法について教えてください。セルに値を代入して、他のセルに表示する値を計算する方法を知りたいです。
  • エクセルのセルに値を代入して、他のセルに表示される計算結果を変える方法を教えてください。例えば、C5に1という値を代入した場合、C6には32という値が表示されるなど、特定の条件で計算結果を変える方法を知りたいです。
  • エクセルで変数を使って計算する方法を教えてください。例えば、C5に1という値を代入した上で、D5の数字を500とした場合、D6には2という値が表示されるなど、特定の条件で計算結果を変える方法を知りたいです。

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

  • ベストアンサー
  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.2

【補足への回答】 こんな感じでいかがでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$C$5" Select Case Target.Value Case 1 Range("C6").Value = 24 Range("D5").Value = 600 Range("D6").Value = 0 Range("E5").Value = 600 Range("E6").Value = 0 Case 2 Range("C6").Value = 32 Range("D5").Value = 1000 Range("D6").Value = 0 Range("E5").Value = 1000 Range("E6").Value = 0 End Select Case "$D$5" Select Case Range("C5").Value Case 1 Range("D6").Value = (600 - Target.Value) / 50 Case 2 Range("D6").Value = (1000 - Target.Value) / 50 End Select Case "$E$5" Select Case Range("C5").Value Case 1 Range("E6").Value = (600 - Target.Value) / 100 Case 2 Range("E6").Value = (1000 - Target.Value) / 100 End Select Case "$F$5" Select Case Target.Value Case "甲" Range("F6").Value = 4 Case "乙" Range("F6").Value = -4 End Select End Select End Sub

testtest2
質問者

お礼

おかげさまで素晴らしいものが出来ました。 本当にありがとうございます!

その他の回答 (1)

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.1

ご希望の内容だとマクロを使うよりないかと思います。 対象シートのシートタブを右クリックして「コードの表示」を選択してください。そして、現れた画面の右側のエリアに次のコードをコピーしてください。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$C$5" Select Case Target.Value Case 1 Range("C6").Value = 24 Range("D5").Value = 600 Range("D6").Value = 0 Range("E5").Value = 600 Range("E6").Value = 0 Case 2 Range("C6").Value = 32 Range("D5").Value = 1000 Range("D6").Value = 0 Range("E5").Value = 1000 Range("E6").Value = 0 End Select Case "$D$5" If Range("C5").Value = 1 Then Range("D6").Value = (600 - Range("D5").Value) / 50 End If Case "$E$5" If Range("C5").Value = 1 Then Range("D6").Value = (600 - Range("E5").Value) / 100 End If End Select End Sub これで、C5、D5、E5セルに入力があるとご希望通り表示されるようになります。 ところで、ご質問の内容だとE6セルの値は0のまま変わりませんが、それでよかったのでしょうか。 > E5の数字を500とした場合にD6に表示される値は1 > (数字を100下げる毎に、D6に表示される値が+1される。) > (数字を100上げる毎に、D6に表示される値が-1される。) とありますが、 > E5の数字を500とした場合にE6に表示される値は1 > (数字を100下げる毎に、E6に表示される値が+1される。) > (数字を100上げる毎に、E6に表示される値が-1される。) ということではないのでしょうか。もし後者であれば、コードの下から4行目を次のように変更してください。 Range("E6").Value = (600 - Range("E5").Value) / 100

testtest2
質問者

補足

C5に2という値を代入した場合 C6に表示される値は32 D5に表示される値は1000 D6に表示される値は0 E5に表示される値は1000 E6に表示される値は0   という場合 D5の数字を900とした場合にD6に表示される値は2 (数字を100下げる毎に、D6に表示される値が+2される。) (数字を100上げる毎に、D6に表示される値が-2される。) E5の数字を900とした場合にE6に表示される値は1 (数字を100下げる毎に、D6に表示される値が+1される。) (数字を100上げる毎に、D6に表示される値が-1される。) また、F5に甲という文字を入れた時 F6に表示される値は4 F5に乙という文字をいれた時 F6に表示される値は-4   というマクロを追加しようと思い少しいじってみたのですが 素人の浅知恵からやっぱりエラーが出ました( ´;ω;)   度々申し訳ありませんが、ご指導お願いします。  

関連するQ&A