• ベストアンサー

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

毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面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/17068)
回答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

  • オートフィルのマクロを作りたい

    ある列に複数のデータがある場合、その一番上の右隣のセルに数式などを入力後、そのセルの右下の小さい四角をダブルクリックすると、左の列のデータある一番下までオートフィルされますよね。 これのマクロを組みたいのですが、単純に出来ません。 普通通りマクロの記録をすると、実際に入力されていたセル番号までのマクロとなってしまい、データを追加した場合意味が無くなります。 具体的に説明すると、 A1からA10までそれぞれデータがある場合、 B1に数式を入力後、オートフィルでB10までコピー。 これをマクロで組もうとすると、B10までのフィルが組まれてしまい、A11~A20までデータを追加後マクロを実行してもB10までのフィルしか実行されません。 「左の列のデータがあるところまで」というマクロは組めないのでしょうか。

  • エクセルマクロでセルの値を下へコピーするには

    ご教授下さい。 毎日送られてくる項目数の多い表を、必要な項目のみ取り出して表を整理するマクロを組んで使っています。しかし、日によって行数が違う為、ある列に数式を入力して下へコピーする場合、マクロ操作が終わってからオートフィルを使って下へコピーしています。行数が違っても行数分だけ下へコピーできるマクロを教えて下さい。何卒よろしくお願い致します。      A列   B列   C列   D列     E列 1行    豆   10入   2個   100円   (数式CXD)200円 2行   飴   20入  3個   150円   (数式CXD)450円  3行   餅   10入   4個   100円  (数式CXD)400円 4行   麦   15入   2個   200円   ↓ 5行   米   20入   4個   100円   ↓ 上記のような表でE列の数式を下へコピ-するマクロです。 日によって行数に違いがある場合でも行数分だけ 下へコピー出来るマクロを教えて下さい。

  • エクセル マクロ 文字列からの行数の取得

    エクセルでマクロ初心者です。よろしくお願いします。例えば1列目にデータ名が入力されていてその個数が可変である場合(小計は末尾ではありません)小計行の1列目から数式をいれたいのですが、行数が固定でないため小計と書かれたセルの行数を取得したいのですが、わかりません。いい方法をお願いします。    A B C D データ aa bb cc 小計 ・ ・

  • Excelのマクロを使ってのオートフィル

    Excelのマクロを使ってのオートフィルについて教えて下さい。 類似の質問があったのですが、決まったセルからのものが多くわかりませんでした。 マクロはまだ始めたばかりです。 やりたいことはExcelの2つのシートに別のcsvファイルの数字を入れることです。 ExcelのSheet1のD1セルに日付を表す数字が入っています。 Sheet2と3には2行目に月の日付がずらりと並んでいます。 1列目には記録番号が入っています。 それぞれのシートにSheet1のD1セルと同じ日付の列を見つけて、 その下の行から1列目の記録番号を元に検索したcsvファイルのデータを引っ張ってきたいのです。   Sheets("Sheet1").Select Cells(3, (Sheets("Sheet2").Range("D1")).Select と最初に入れるセルを探しても違う列に飛んでしまったりします。 又、下のセルまで数式もコピーできずに止まったままです。 VBAまでは手が出せずに悩んでいます。どうか教えて下さい。よろしくお願いします。

  • とほほのエクセルマクロ

    以下の文の[-1899]の部分を可変型にしたいのですが。 どなたかご存知有りませんか? ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" ==================================== マクロの説明です。 ==================================== エクセルマクロでsheet1にデータを入力していって、 sheet1のD列内に同一のコードがないかをチェックするために sheet1のコピーを作成してD列でソートしてから D列の1行目=2行目ならK列に”いっしょだよ”という メッセージを出すようにIF文を書きこんでいきます。 最後にこの”いっしょだよ”というメッセージが何件あったかを見たいので、 一番下の行+1行目に ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" という文を入れたのですがこれだと自分が居る一つ上のセルから 1899上までしか行かないのですが、毎回データを入力して行数は増えていってしまいます。 どのような、文にしたらよいのか教えてください。 お願いいたします。

  • Excel マクロで連番作成方法を教えてください。

    OS:Windwos2000 Excel2000 以下の内容をマクロで実施する方法を教えてください。 過去の質問を確認しましたが、 私の希望する内容とは分部とはことなるため、 質問させていただきました。 A列に入力されているデータの最終行まで 各B列、C列、D列にオートフィル機能を使って数式コピーを行いたい。 ※A列のデータ数は固定ではなく増減します。 ※B列、C列、D列の先頭行には数式を入力済みです。 ※オートフィル機能でなくても問題ありません。 よろしくお願いいします。 A列     B列      C列     D列      E列 データ   =LEFT(A1,4)  -   =MID(A1,8,14)  =B1&C1&D1 データ   =LEFT(A2,4)  -   =MID(A2,8,14)  =B2&C2&D2 データ   =LEFT(A3,4)  -   =MID(A3,8,14)  =B3&C3&D3 データ   =LEFT(A4,4)  -   =MID(A4,8,14)  =B4&C4&D4 データ   =LEFT(A5,4)  -   =MID(A5,8,14)  =B5&C5&D5 ・

  • Excel VBA : 追加でコピペする方法

    ExcelのVBAでマクロを作成したので教えて下さい。 sheet(1)C3からC列にDATAが入力済みです。 (同じく、D3からD列にもC列と同じ行数DATAが入力済みです。) DATAは、途中で空白セルは無く、全て埋められた状態です。 (つまり、C列とD列の使用されている行数は全く同じです。) それぞれのDATA(C列、D列)をコピーして Sheet(2)のB3(B列)とC3(C列)から下方にペーストするのですが、 Sheet(2)のB列とC列には既に旧DATAが入力済みなので 旧DATAは消去せず下側に追加する形式でコピペしたいのです。 (旧DATAの直下の行に新規にDATAを追加) 利用済みの行数を取得してコピーは下記で良さそうですが ?   Cells(3,3).end(xlDown).Row.copy 書き込み(ペース)で思考が停止状態です。 どのようにすれば良いでしょうか ?

  • 【Excel VBA】データを集計する数式を入力するマクロ

    Excel2003を使用しています。   A列   B列   C列   D列   E列   F列 1      9/1                    20000 2      9/2              1000 3      9/10              5000 : : 10           9月計        ※1    ※2    11 12 13     10/1                   10000 14     10/10             2000 15     10/14                   4000 : : 20           10月計       ※3    ※4 上記のデータでいうと、 ※1(E10セル) =SUM(E1:E9) ※2(F10セル) =SUM(F1:F9) ※3(E20セル) =SUM(E13:E19) ※4(F20セル) =SUM(F13:F19) という内容の数式を入力するマクロを作成したく、数式を入力したいセルをアクティブにして、ボタン等に登録したマクロを実行すると数式が入力されるようにしたいと考えていますが、その際、集計範囲の最下行は、アクティブセルの1行上までになりますが、最上行をどのようにして取得すればよいかがわかりません。 (実際のデータは、もっと行数も入力されているデータ数も多いです) また、他にもこんな方法があるとか、こうしたほうが簡単とかあれば、教えていただけると勉強にもなりますので助かります。 うまく説明できなくて申し訳ありませんが、よろしくお願いします。

  • 【エクセル】マクロでのセル移動についてお尋ねしたいのですが。

    エクセルで、行数の異なる複数の列に大量のデータを入力しています。 「マクロ実行用のボタン」を1つ作って、そこをクリックする度に、 例えば、セルを「B2」→「C2」→「D2」→「B2」→繰り返し のように順番に選択するといった、マクロを作りたいのですが、詳しい方、アドバイスお願いします!

  • エクセルマクロ 横向きのオートフィルについて質問

    VBA初心者です。エクセルでオートフィルのマクロに挑戦しています。 セルA2にすでに入力されている関数を横向きにオートフィルを行い、1行目の入力されている最終列まで行いたいです。1行目の最終列は可変です。 いろいろ調べても、「最終行まで」というものはあるのですが、「最終列まで」というものが見つからないので、どなたか助けてください!よろしくお願いします。

専門家に質問してみよう