- ベストアンサー
エクセルVBAで
あるセル(D1)とします。 ここに数式が入力されていてこの数式をたとえばD2~D500までコピー するというのはどのようにすればいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro1() Range("D1").Select Selection.AutoFill Destination:=Range("D1:D500"), Type:=xlFillCopy End Sub マクロ記録の結果です。 そのまま貼り付けてお使いください(もちろん、セル番地を変更することにより応用できますよ)。
その他の回答 (4)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。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)
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)
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)
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列目が終わりまでコピーです。
補足
すいません、言葉が足りませんでした。 例えばA列のどこかに”終わり”という文字がある行までそのコピーを 繰り返したいということなんですが。