• ベストアンサー

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

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

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

簡単なのを2つほど。 (1)セルC1:D1を最終セルまで単純にコピーする方法 ------------------------------------------------------ Sub Test222()  Range("C1:D1").Copy Range("C2:D" & Cells(Rows.Count, "A").End(xlUp).Row) End Sub ---------------------------------------------------- (2)セルC1:D1をフィルドラッグしてのコピー方法 -------------------------------------------------- Sub Test333()  Dim myRange As Range  Set myRange = Range("C1:D" & Cells(Rows.Count, "A").End(xlUp).Row)  Range("C1:D1").AutoFill Destination:=myRange, Type:=xlFillDefault End Sub ------------------------------------------------- (1)の単純なコピーが簡単ですね。 以上です。  

akaitt
質問者

お礼

Range("C1:D1").Copy Range("C2:D" & Cells(Rows.Count, "A").End(xlUp).Row) なるほどです。勉強不足でした。ありがとうございました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

>現在は行数を多く設定していますが との関連で 例えば =IF(G7="","","A") <-第7行目に で見た目は空白でも、式を入れていると Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d End Sub は7になってしまうので注意。 Sub test02() MsgBox Range("A1").CurrentRegion.Rows.Count End Sub でも同じ。UsedRangeでも同じ。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 右側に隣接したセルの場合は、左側のセルに対してオートフィルのショートカットが働きます。試してみてください。 C1 、D1 +--------+ | 数 式  | +--------+ ←ここをダブルクリック 数式のセルの右下をダブルクリックすれば、数式はコピーされます。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

すでに回答が出てるので、参考に2つ Sub test() Range("c1", "d" & Cells(Rows.Count, 1).End(xlUp).Row).Formula = Range("c1:d1").Formula End Sub Sub test_2() Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Range("c1:d1").Copy Cells(i, 3) Next i End Sub

akaitt
質問者

お礼

色々あるんですね。勉強になりました。ありがとうです。

  • j38
  • ベストアンサー率22% (9/40)
回答No.1

Bセルの最終行(10)を算出するには、以下でいけると思います。 繰り返しの終わりの判定値に使えば良いと思われます。 Cells(Rows.Count, 2).End(xlUp).Row

akaitt
質問者

お礼

繰り返しの終わりの判定値、勉強になりました。ありがどうです。

関連するQ&A