- ベストアンサー
excelのセルに入力した数値
excelのセルに入力した数値を計算させたいのですが何かいい方法は知りませんか? 例えば、A1のセルに1という数字を入力します。またそのA1のセルに今度は2という数字を入力したときにA1のセルの値が3になるようにしたいのです。簡単に言えば前に入力してある数値を記憶させておいて次に入力した数値をどんどん足していくようにしたいのです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1のA1で質問の操作ができるようにしてみました。 入力したA1を消去するにはマクロを無効化(2行目の『'』をとる)する必要があります。 または、無効化するようなマクロを作ることも考えられます。 (A1に1000があって、0にするには-1000を入力します。) ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ここから ↓ Private Sub Worksheet_Change(ByVal Target As Range) 'マクロを無効にするには次の行の『'』を削除する 'Exit Sub Dim A1_old As Double '前のA1 Dim A1_new As Double '新しいA1 'エラーが起きるような入力をしたら入力を取り消す On Error GoTo ErrorHandler If Target.Address = "$A$1" Then 'A1に入力したら入力した数値を記憶 A1_new = Target.Value With Application .EnableEvents = False .Undo 'Undoして前の数値にする A1_old = Range("A1") '前の数値と入力した数値を加算する Range("A1").Value = A1_old + A1_new .EnableEvents = True End With End If Exit Sub ErrorHandler: 'A1に文字を入力したりした時のエラー対応 '入力を取り消ししてしまう With Application .EnableEvents = False .Undo .EnableEvents = True End With End Sub
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
●#5のnishi6さんの解答と基本は同じと思いますが、少し簡単に、下記を作って見ました。 ●入力セルの対象範囲をA1より20行×5列に限っています。 これは増やせば、(メモリーの許す限り)増やせます。 結果を可視的にするため、+5列右列の対応行に対応させて累積和をセルに表示しています。元のセルに累積和の結果を戻す(表示する)ことも可能です。 Cells(i, j + 5) --->Cells(i, j) ●Application.EnableEvents = Falseのステップは、セルの値を表示するとChangeイベントが起こり、無限ループになるのでこの処理の場合だけ起こらない(無効になる)ようにしています。2行下で元に戻しています。 ● Dim t(20, 5) Private Sub Worksheet_Change(ByVal Target As Range) i = Target.Row : j = Target.Column t(i, j) = t(i, j) + Target.Value Application.EnableEvents = False Cells(i, j + 5) = t(i, j) Application.EnableEvents = True End Sub
- kennta111
- ベストアンサー率7% (12/151)
マクロはダメなんですか?
- estima01
- ベストアンサー率27% (43/155)
「形式を選択して貼り付け」-「演算」-「加算」を利用されますと ある程度近いことができます。 ただ実際に入力というのではなく「コピー」「貼り付け」の応用ですので 参考にして活用してみてください。
- ADEMU
- ベストアンサー率31% (726/2280)
別のカラムに表示させるのならともかく同じカラムに表示させるのはループしてしまうので無理だと思います。
- Good-S15
- ベストアンサー率33% (149/439)
こんばんは。 関係ないんでしょうが、何のために使用するのでしょうか? また、この仕様だとクリアする機能(ボタン)も付けないといつかセルがパンク?すると思います。
お礼
ありがとうございました。「マクロ」って初めて使うのでなんだかものすごく感激してしまいました。本当に助かりました。