• ベストアンサー

エクセル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

  • Excel. Vba

    Vbaでセルの値だけコピーしたいのですが可能でしょうか? 数式を埋め込んだセルに、数値が入力されたセルを形式を値だけ貼り付けにして貼り付けても数式が消えてしまって値だけ入ってます。 数式は消さず、値だけコピーというのはvbaで実現可能でしょうか?

  • Excel VBA

    VBAでセルF1に数式を入れようと次のようにしました。 Range("F1").Formula = "=if(D4=" & """"",""""" & ",JIS(PHONETIC(D4)))" 実行したところ、F1セルは「#NAME?」と表示されてしまいます。 F1セルの数式バーには、きちんと、「=if(D4="","",JIS(PHONETIC(D4)))」となっています。 この数式を数式バー内で一度選択してリターンキーで決定するときちんとD4セルのふりがなが入ります。 これまでにも、数式を入れたことはあったのですが、こんなことにはなりませんでした。 今回は、なぜ正しい関数式が入ってもきちんと表示されないのか分かりません。 よろしくお願いします。

  • エクセルVBA:選択・貼付け(繰り返し?)

    3種類の数式を、条件により選択しながら、不特定の回数(行数)に貼り付けたいのですが、どのようなコードが考えられますでしょうか?よろしくお願いします。 ○Sheet1  数式保存セル 数式(1):AZ8 数式(2):BA8 数式(3):BB8  数式選択条件 D列の値が (1)であれば数式(1)を、(2)であれば数式(2)を、(3)であれば数式(3)を  数式適用範囲 I8 ~ AW107  ※3種類の数式はそれぞれ、I8 で作成し、保存セルにコピーして用意したもの  例 / D8 が(1)であれば、AZ8 をコピーして、I8 ~ AW8 に計算結果のみ貼付けたい(数式のみ→値のみ)      D9 が(1)であれば、AZ8 をコピーして、I9 ~ AW9 に   〃      D10 が(3)であれば、BB8 をコピーして、I10 ~ AW10 に  〃      D11 が(2)であれば、BA8 をコピーして、I11 ~ AW11 に  〃      ・・・  ※何行使用するかは毎回変わる   ※他シートを用意したくない  ※ AY列は空いている(行数をカウントし変数とする、IF関数を用い条件に応じて数式保存セル位置を文字列で表示し変数とする、などを組合わせてできないかと思いましたが、思い浮かびませんでした。)

  • エクセルでのマクロについての質問です

    毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。

  • エクセルの入力について

    エクセル2000でセルに数式を入力しても、計算結果が反映されません。ほかの、同じ数式を入力したセルでは、ちゃんと表示されますが、そのセルに限って数式を入れても回答が"0"となってしまいます。書式を確認してみると、「通貨」になっており、「数値」に直しても(このとき表示されるサンプルも0のままです。)又「通貨」に戻ってしまいます。ほかのセルから数式をコピーしても、書式をコピーしてもだめでした。どうしたら正しく数式が反映されるのでしょうか?

  • Excel VBAについて

    Excelでセルに入力した文字等を数式バーに表示させないようにするのは、 どのようにしたらよいのでしょうか? 数式バーを非表示にする以外の方法を教えて下さい。

  • VBAにてデータを振り分けたい。

    2つのシート(sheet1、sheet2)があり、sheet2に振分けるデータ(下表)を作成しておきます。   (列)  A   B   C   D (行)   1     山   川   地   空  2     ○   △   ×   □  3     ア   イ    ウ   エ (1)ユーザーフォームを作成し、その中にコンボボックスを作成して山を入力する。 山は、セルA1へ、川は、セルB2へ、地は、セルC3へ、空は、セルD1、それぞれ 決められたセルにコピーされる(すべてsheet1へコピー)。 (2)にコンボボックスにて○を入力する。○はセルA1へ、△は、セルB2へ、×は、 セルC3へ、□は、セルD1へ、それぞれ決められたセルにコピーされる(すべて sheet1へコピー)。 ちなみに(1)と(2)のコピーされるセルの位置は同じ場所です。 というようなものをExcelのVBAにて作成したいのですが、VBAは、まだよくわかりません。 出来れば、sheet1のセルに数式などを入力したくはないのですが...。 どうか皆様のご指導を宜しくお願い致します。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセル2000 VBA データの削除

    セルのデータを漏れなく消去するマクロの記述を教えて下さい。 なお、入力セルと数式が入っている、非入力セルが混ざり合っていますので、数式は残すように記述する方法もあればどなたかお教え下さい。

  • エクセル2000 VBA

    エクセル2000です。 シートをコピーして他のファイルにコピー&ペーストしようとしているのですが、シートに入っている数式までコピーされてしまうと元ファイルを参照しに行くので困っています。 次の方法として、形式を選んで貼り付けようとしてみました。 1) 値 2) 書式 3) 入力規則 の順序で貼り付けていくと、手動では出来るのですが、それをマクロで記録してから実行すると、一番最後の入力規則の部分で停止してしまいます。 数式以外のものはコピーしたいのです。 どなたかご存知でしたらよろしくお願いします。

専門家に質問してみよう