• ベストアンサー

エクセルにてセルへ数値を入力時、事前に入力していた値との差を別のセルに表示させたいです。

エクセルにてA1のセルに数値を入力した場合(事前に入力していた値-入力値)の差を隣のセル(B1)に表示し、再びA1に入力した数値の差をそのまた隣のセル(C1)に表示、再びA1に入力した数値の差をそのまた隣のセル(D1)に表示、再び… と繰返し入力した数値の差を右列へ順番に表示させていきたいのですが、どなたか方法を教えて下さい。 又、入力した時点の日付けも、差を表示させた下のセルに表示させる方法もお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

たとえばA20を作業セルとして利用するとして Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Cells(1, Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column + 1).Value = Range("A1").Value - Range("A20").Value Cells(1, Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column).Offset(1, 0).Value = Date Range("A20").Value = Range("A1").Value End If End Sub でいかがでしょう

tetsushi22
質問者

お礼

思った通りに動作しました! とても助かりました。ありがとうございました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

関数で出来ると思って居るなら、エクセル関数の理解不十分です。 VBAそれもイベントプロシャーの考えがわかって無いと出来ません。VBAの経験ありますか。 この要求(仕組み)そのものが、エクセルではキワモノ的発想です。 エクセルでは入力するデータは別セルに順次入れるのが鉄則です。 初心者は特に。 私も#4さんと同じ考えです。 ーー VBAなら#2さんのコードの一部を Cells(1, Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column + 1).Value = Range("A1").Value - Range("A20").Value を差の考えによっては、ABS(絶対値)にするとか(質問者がマイナス順序を指定しているので#2のご回答が正しいのでしょう) Application.EnableEvents=False と Application.EnableEvents=True を最初と最後の次と前に入れます。 入れなくても、この質問の場合は、変化するのはA1セル以外なのでそのままでもよいのですが。

回答No.4

どうして、こういう要望が出るのか理解に苦しみます。 入力ミスがあったらどうするのか?たとえば「40」と入力すべきところを間違えて「41」と入力した場合にどうするのか? そもそも、比較元のデータがなければ入力ミスしたかどうかさえ確認できません。そのような不確実なデータにどれだけ意味があるのでしょう? 仕事としては、最低限、入力ミスしたかどうの確認ができる状態にしておくべきではないでしょうか。

回答No.3

よくわかってないんだけど・・・、 少なくともVBAを使わないと処理できないと思うよ。 とりあえずこんな感じになるのかな? 表示は表示形式で設定する形で。 Dim 前数字 As Integer Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Integer x = 2 If Target.Column = 1 And Target.Row = 1 Then Do While Cells(1, x).Value <> "" x = x + 1 Loop Cells(1, x).Value = 前数字 - Cells(1, 1).Value Cells(2, x).Value = Date 前数字 = Cells(1, 1).Value End If End Sub

tetsushi22
質問者

補足

回答ありがとうございますw コードの表示にコピーしてやってみたのですがA1に入力した数字に -が付いてB1…に表示されていきます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

A1の次にA2にデータをいれてその差をB2へ…以下そのまま下へと続いていく といった動作では駄目なんですか

tetsushi22
質問者

補足

さっそく回答ありがとうございます! A1の下へは同じように入力する数値用のセルにしていきたいので、 A1へ入力したデータだけで動作させたいです。

関連するQ&A