- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA、数式の入ったセルのコピーについて質問です。よろしくお願)
エクセルVBA、数式の入ったセルのコピーについて質問
このQ&Aのポイント
- エクセルVBAで、数式の入ったセルをコピーする方法について質問します。
- シートのA列には日付が入っており、データを更新する度に行が追加されます。数式(1)~(3)は、異なる計算式で日付データを参照し、計算を行っています。
- A列にデータを追加した際に、B~D列の数式をA列の最終行までコピーしたいですが、どのようなVBAコードを書けば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
With ActiveSheet 'とか Sheets("Sheet1") .Range(.Cells(.Rows.Count, 4).End(xlUp), .Cells(.Rows.Count, 1).End(xlUp).Offset(, 1)).FillDown End With こんな感じですが、 手作業でも、そんなに手間ではないです。 例えば数式が10行目まではいっているなら、 B10:D10 を選択して、右下のフィルハンドルをダブルクリック。 だけです。
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
回答No.2
A列に新しいデータを追加したときにその一行上まで数式はコピーされてるはずですよね。ですので単純に Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Column = 1 Then Range(Cells(Target.Row - 1, Target.Column + 1), Cells(Target.Row - 1, Target.Column + 3)).Copy Target.Offset(0, 1).PasteSpecial End If Application.EnableEvents = True Application.CutCopyMode = False End Sub でいいのではないでしょうか。
お礼
早々のご回答ありがとうございます。 B~D列の最終行を探してコピーするということですね。 FillDownを使うのは勉強になりました。 もう一つアドバイス頂いた以下の件ですが・・・ B10:D10 を選択して、右下のフィルハンドルをダブルクリック。 だけです。 →今回以来した数式コピーは、「データ更新」という一連の作業の一部で、データベースとなる部分を加工する部分であるため、ユーザー側にはシートを見せないようにしています。 コマンドボタンで一気に解決したく、質問いたしました。