• ベストアンサー

エクセルVBAで

あるセル(D1)とします。 ここに数式が入力されていてこの数式をたとえばD2~D500までコピー するというのはどのようにすればいいのでしょうか?

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

  • ベストアンサー
  • motsu2006
  • ベストアンサー率37% (110/297)
回答No.1

Sub Macro1() Range("D1").Select Selection.AutoFill Destination:=Range("D1:D500"), Type:=xlFillCopy End Sub マクロ記録の結果です。 そのまま貼り付けてお使いください(もちろん、セル番地を変更することにより応用できますよ)。

fisherman2
質問者

補足

すいません、言葉が足りませんでした。 例えばA列のどこかに”終わり”という文字がある行までそのコピーを 繰り返したいということなんですが。

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

こんにちは。KenKen_SP です。 数式なのでセル書式が不要です。コピー&ペーストは不要かな? 連続範囲ならループも不要かも... 3つサンプルを提示しておきます。 ' D1:D500 の範囲で D1 の数式をコピー Sub Sample1()   Range("D1:D500").Formula = Range("D1").Formula End Sub ' A 列にある「終わり」キーワードがある行まで D1 の数式をコピー Sub Sample2()   Dim r As Long   r = Application.Match("終わり", Columns("A"), 0)   Range("D1:D" & CStr(r)).Formula = Range("D1").Formula End Sub ' A 列でデータがある最終行を調べ、そこまで D1 の数式をコピー Sub Sample3()   Dim r As Long   r = Cells(Rows.Count, "A").End(xlUp).Row   Range("D1:D" & CStr(r)).Formula = Range("D1").Formula End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No3です。 勘違いしました。「終わり」があるのはA列でしたね。D列だと思ってました。修正します。 Sub TEST2() Dim r As Long Range("D1").Copy r = 1 Do r = r + 1 If Cells(r, 1).Value = "終わり" Then Exit Do ActiveSheet.Paste Cells(r, 4) Loop Application.CutCopyMode = False End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

Sub TEST1() Dim r As Long Range("D1").Copy r = 1 Do r = r + 1 If Cells(r, 4).Value = "終わり" Then Exit Do ActiveSheet.Paste Cells(r, 4) Loop Application.CutCopyMode = False End Sub

  • cholest
  • ベストアンサー率50% (1/2)
回答No.2

Sub macro1() Dim r As Long Range("D1").Copy r = 1 Do r = r + 1 ActiveSheet.Paste Cells(r, 4) Loop Until Cells(r, 1).Text = "終わり" End Sub 1列目が終わりまでコピーです。

関連するQ&A