VBマクロ初心者がシートをコピーする方法

このQ&Aのポイント
  • VBマクロを使って、任意の複数行をコピーする方法を教えてください。
  • 現在、VBを勉強中の初心者です。マクロの自動記録を使って、シート1の5〜6行目をシート2のA3にコピーすることはできました。しかし、任意の複数行をコピーする方法がわかりません。
  • 例えば、シート1にA1に200306、A2に200307、A3に200307、A4に200307、A5に200308、A6に200309、A7に200309のデータがある場合、200307のデータをコピーしたい場合は、シート2のA3にA2〜A4をコピーしたいです。どのようにすればよいでしょうか?
回答を見る
  • ベストアンサー

任意の複数行をコピーするマクロ

VBを勉強中の初心者です。 マクロの自動記録でシート1の5~6行目をシート2のセルA3へコピーすることはできました。マクロの内容は   Sheets("Sheet1").Select   Rows("5:6").Select   Selection.Copy   Sheets("Sheet2").Select   Range("A3").Select   ActiveSheet.Paste となっていました。 上記のシート1の5~6行目を任意の複数行(例えば A1 に 200306 A2 に 200307 A3 に 200307 A4 に 200307 A5 に 200308 A6 に 200309 A7 に 200309 のデータがあった場合、コピーしたい年月が 200307 の場合は A2 ~ A4 をシート2のA3へ)でコピーしたいのですが、どうすればよいのかどなたか教えて下さい。よろしくお願いします。

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

  • ベストアンサー
noname#8617
noname#8617
回答No.3

>Rows("1:" & Abc).Select Rows(Gyou & ":" & Abc).Select ではいかがでしょうか。

gatyako
質問者

お礼

回答通りに実行しましたらOKでした。 たいへん有難うございました。

その他の回答 (2)

noname#8617
noname#8617
回答No.2

補足です。。。 ※は行った動作です。 Cells.Select ※シート全体を選択 Selection.AutoFilter ※メニューから[データ]-[フィルタ]-[オートフィルタ] Selection.AutoFilter Field:=1, Criteria1:="200" ※A列を[200]でフィルタリング Range("A1").Select ※A1セルを選択 Range(Selection, Selection.End(xlDown)).Select ※A1セルで[Shift]+[Ctrl]+[↓]を押下 Range(Selection, Selection.End(xlToRight)).Select ※A1セルで[Shift]+[Ctrl]+[→]を押下 Selection.SpecialCells(xlCellTypeVisible).Select ※[Alt]+[;]を押下 (可視セルのみ選択) Selection.Copy ※コピー Sheets("Sheet2").Select ※Sheet2を選択 Range("A1").Select ※Sheet2のA1セルを選択 ActiveSheet.Paste ※ペースト Sheets("Sheet1").Select ※Sheet1を選択 Application.CutCopyMode = False ※コピー解除 Selection.AutoFilter ※メニューから[データ]-[フィルタ]-[オートフィルタ] Range("A1").Select ※A1を選択

noname#8617
noname#8617
回答No.1

Sheet1にこんなデータがあったとします。 A列が200のものだけをSheet2にコピーしたいとします。 ※1行目にはタイトルが入っていること ※データ(B列)はすべて埋まっていること | A | B | C | --+-----+-----+-----+- 1| Key | Data| | 2| 100 | 10 | | 3| 200 | 20 | | 4| 200 | 5 | | 5| 300 | 25 | | 6| 300 | 10 | | 7| | | | ***** Cells.Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="200" Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Application.CutCopyMode = False Selection.AutoFilter Range("A1").Select 3行目の200の値を変えてあげれば 任意のものがコピーできます。 何をやっているかといいますと オートフィルタをかけて対象のものだけをコピーする という動作を記録しただけです。 ※普通はループでまわして検索文字と一致するものを  コピーすることでしょう。 ※今回はあえてわかりやすい即席なやり方でした。 ループや変数を使用できるのであれば そちらのやり方を回答しますがいかがでしょうか。 参考になったでしょうか。。。ふあん。

gatyako
質問者

補足

Neninp: Nendo = InputBox( _ Title:="年月入力", _ Prompt:="年月(例:200306)を入力して下さい。") Nentuki = Nendo * 1 Sheets("ドキュメント1").Select Gyou = 1 Check: If Gyou = 65500 Then GoTo Endlabel End If If Range("A" & Gyou) <> Nentuki Then Gyou = Gyou + 1 GoTo Check End If Sheets("1").Select Cells.Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("D1") _ , Order2:=xlAscending, Key3:=Range("C1"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _ xlSortNormal, DataOption3:=xlSortNormal Gyou = 1 Search: If Range("A" & Gyou) <> Nentuki Then Gyou = Gyou + 1 GoTo Search End If Dim Myrule, Abc, Bcd Abc = Gyou Bcd = Abc + 1 Myrule: If Range("A" & Abc) = Range("A" & Bcd) Then Abc = Abc + 1 Bcd = Bcd + 1 GoTo Myrule Else Rows("1:" & Abc).Select ←←←← End If Selection.Copy Sheets.Add.Name = 123 ActiveSheet.Paste Application.CutCopyMode = False Sheets("123").Move after:=Sheets("1") Tuki = Nentuki Mod 100 & "月" Sheets("123").Name = Tuki Endlabel: Range("A1").Select End Sub 上記のマクロのなかの Rows("1:" & Abc).Select "1:" を Gyou にしたいのですが実行するとエラーになります。よろしくお願いします。

関連するQ&A

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルで指定した行範囲を別のシートにコピーするには?

    (1)指定した行(数値)を変数として登録する方法 tx1 = Sheets("0").Range("A1") tx2 = Sheets("0").Range("A2") tx3 = Sheets("0").Range("A3") A1=2 A2=2000 A3=2500 (2)(1)で指定した変数を使用して行範囲を他のシートSheets(”1”)、Sheets("2”)にコピーペースト。 行(”2:1999”) ←tx1 : tx2-1(A2の数値から1を引いた数値) Rows(▲▲▲▲▲▲).Select Selection.Copy Sheets("1").Select Rows("1:1").Select ActiveSheet.Paste 行(”2000:2499”) ←tx2 : tx3-1(A3の数値から1を引いた数値) Range(▲▲▲▲▲▲).Select Selection.Copy Sheets("2").Select Rows("1:1").Select ActiveSheet.Paste ▲部分がエラーになってしまい、うまくいきません。 正しい方法を教えてください。

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • 行を挿入するマクロがうまくいきません。

    Sheets("りんご").Select Rows("1:1").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown Application.CutCopyMode = False End Sub というマクロは、りんごのシートにある1行をコピーして、 みかんのシートの人と名前定義してある特定の行にコピーする マクロです。この次に下のマクロを実行すると Sheets("りんご").Select Rows("2:3").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown それまでのものが残ってしまい、行がどんどん増えていってしまいます。 いずれかのマクロを実行すればリセットされて行が増えないように コピーするにはどうすればよいでしょうか・・?

  • エクセルのマクロ:連続動作を空白行で終了する方法

    XP・Excel2003使用のマクロ素人です。 エクセルのマクロを使って以下のマクロを作りました。 1.Sheet1の1行目に入っているデータをSheet2にコピー 2.Sheet2をコピー 3.Sheet1の1行目を削除 4.上記1~3のマクロを実行するボタンをクリック 作業を繰り返し行いたかったので、(4)の「マクロボタンをクリック」という作業もマクロに組み込んでみたのですが、空白行でも延々に実行されてしまいます。 【Sheet1に入っているデータが空白になったら作業を止める】というマクロはどのように書けばいいのでしょうか? マクロの作り方が根本的に間違っていましたら、あわせてご指摘下さい。 宜しくお願い致します。 Range("A1").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste Sheets("Sheet2").Select Application.CutCopyMode = False Sheets("Sheet2").Copy After:=Sheets(3) Sheets("Sheet1").Select Rows("1:1").Select Selection.Delete Shift:=xlUp Range("A1").Select Sheets("Sheet1").Select Application.Run "Book1!Macro1"

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?

  • VBA 最終行を選んだシートにコピーする。

    VBAど初心者です。どうしても最終行のデータを選んだシートにコピーできません。 LastRow.Selectのところで、止まってしまいます。どのように行を設定していいのかさっぱりわかりません。どなたか、ご指導のほどよろしくお願いします。 Sub copy_last_line() Dim LastRow As Long Sheets("Sheet1").Select LastRow = Cells(Rows.Count, 1).End(xlUp).Row LastRow.Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("A1").Select End Sub

  • 図形をコピーするマクロ

    Sheets("Sheet1").Select ActiveSheet.Shapes("図 1").Select Selection.Copy Sheets("Sheet3").Select Range("E9").Select ActiveSheet.Paste 上記は、"Sheet1"の"図1"を、"Sheet3"の"E9"にコピーするマクロです。 これを改良して、Sheet1以外のシートがアクティブになっている時に実行すると、"Sheet1"の"図1"が、現在アクティブになっているシートのセレクトされているセルにコピーされるようにしたいのですが。 どのようにマクロを変えればいいでしょうか。

専門家に質問してみよう