• ベストアンサー

エクセルの値のコピー(自動で)について

例えば、 セル(A1)に1      セル(B1)に3      セル(C1)に=SUM(A1:B1) と入力します。      セル(C1)は、見た目には4ですが、      実際は「=SUM(A1:B1)」です。  ここで、 セル(D1)には、セル(C1)のコピーを「値」の形式で貼り付けると    セル(D1)は4となります。 このセルDの貼り付けを自動で行いたいのですが可能でしょうか。 私はマクロとか分かりません。 関数での方法を教えて下さい。

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

  • ベストアンサー
回答No.10

こんばんわ。マクロ記述ミスがあったようなので訂正させていただきます。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myRow As Integer myRow = Target.Row If Target.Address = Range("A" & myRow).Address Then Target.Offset(0, 3).Value = Target.Offset(0, 2).Value ElseIf Target.Address = Range("B" & myRow).Address Then Target.Offset(0, 2).Value = Target.Offset(0, 1).Value End If End Sub それと、#9さんのご回答は1行目だけでしか変化しません。2行目以降に値を入力しても何も起こりません。 ですから、わたしはどの行であっても動作するようにTargetとOffsetを使って#9に書かれている Range("D1") = Range("C1") を Target.Offset(0, 3).Value = Target.Offset(0, 2).Value'A列の値が変化した時 Target.Offset(0, 2).Value = Target.Offset(0, 1).Value'B列の値が変化した時 という式で表しているのです。 例えば、A1の値が変化した時 Target.Offset(0, 3).Value = Target.Offset(0, 2).Valueは Targetは,A1・Offset(0,3)は下に0,右に3進んだセル(D1)・Offset(0,2)は下に0,右に2進んだセル(C1)を表しています。ですから、 この式はRange("D1") = range("C1")と同じ意味になるのです。 A2・A3・・・が変化すれば、Targetの値もA2・A3・・・と変化していきます。 ですから、#9さんが >A1に1、B1セルに3、C1に=SUM(A1:B1)と入れる 。C1は4になります。A1(-->2に)またはB1(-->4に)を値を変えても、勿論C1は変りますが、D1には値(5とか6)がセットされませんが。 とおっしゃっておりますが、私の式で動かないということは、この方の書かれた式でも動作しないということになります。 #9さんもよく式の意味を理解してから書き込みをされた方が、よろしいかと思います。このように質問者を惑わすようなことになりかねませんので・・・。

その他の回答 (11)

  • aodesu
  • ベストアンサー率14% (6/42)
回答No.1

=C1とかじゃまずいんですか? D1に=C1とうって、ドラッグしていけばなると思います。 質問のとらえ間違いでしょうか?

eoc
質問者

補足

早速のご返答有り難うございます。 D1に=C1と入力すると、セルD1は見た目は4ですが実際は「=C1」ですよね。 見た目だけでなく、実際にも「値」とするには、C1をコピーして、カーソルをD1に運び、形式を選択して貼り付けの「値」として貼り付けています。 これを自動でやりたいのです。 「実際は」とは、数式バーの表示のことです。

関連するQ&A