dポイントプレゼントキャンペーン実施中!

エクセルVBA、数式の入ったセルのコピーについて質問です。よろしくお願いします。
シートのA列は日付の入ったセルがあり、データを更新する度に行が追加されていきます。
数式(1)~(3)は、それぞれ異なる計算式が入っており、日付データを参照して計算を行っています。
  A    B    C    D
1 日付データ 数式(1) 数式(2) 数式(3)
2 日付データ 数式(1) 数式(2) 数式(3)
3 日付データ  
4 日付データ  
5 日付データ  

A列にデータが追加したときに、B~D列の数式をA列の最終行までコピーしたいのですが、
どのようなコードを書けばよいでしょうか?
ちなみに、1行目のB~D列には、データ更新の有無に関わらず、必ず数式が入っているものとします。
何かよいアドバイスがあればよろしくお願いします。
【補足】
単純に考えると、B1~D1をA列の最終行までAUTOFILLすれば良いのでしょうが、データ数がかなり多く、
この方法だと時間がかかってしまいます。A列のデータ追加前の数式セルの最終行から、追加後の最終行までとすると、処理は早くなるのでしょうか?

A 回答 (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 を選択して、右下のフィルハンドルをダブルクリック。
だけです。
    • good
    • 2
この回答へのお礼

早々のご回答ありがとうございます。
B~D列の最終行を探してコピーするということですね。
FillDownを使うのは勉強になりました。

もう一つアドバイス頂いた以下の件ですが・・・
B10:D10 を選択して、右下のフィルハンドルをダブルクリック。
だけです。
→今回以来した数式コピーは、「データ更新」という一連の作業の一部で、データベースとなる部分を加工する部分であるため、ユーザー側にはシートを見せないようにしています。
コマンドボタンで一気に解決したく、質問いたしました。

お礼日時:2010/08/31 22:04

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

でいいのではないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!