マクロでシート2~6のデータをシート1に転記したい

このQ&Aのポイント
  • マクロを利用してシート2~6のデータをシート1に順番に転記したいです。シート2~6は同じ列構成ですが、行数は異なります。同じ記述が繰り返されるので、より短くする方法を知りたいです。
  • マクロを使ってシート2~6のデータをシート1に転記したいです。シート2~6は列構成が同じで、行数が異なります。現在の記述は繰り返されているので、より短い記述方法について教えてください。
  • マクロを利用してシート2~6のデータをシート1に転記したいです。シート2~6は同じ列構成で、行数が異なるため、同じ記述が繰り返されています。もっと短く記述する方法を教えてください。
回答を見る
  • ベストアンサー

マクロでシート2~6のデータをシート1に転記したい

マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • gx9wx
  • お礼率95% (440/460)

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

#1,3です。誤解しておりましたが、シート1のA1から貼り付けて良いのですね。 どこをいじれば良いか、質問者様ならお分かりになると思いますが、 シート1をまっさらにして良いのなら、冗長なところを除いて下記でいけると思います。 Sub データ更新() Dim sh As Worksheet Dim destRange As Range, srcRange As Range With Sheets("シート1") .Cells.Clear Set destRange = .Cells(1) End With For Each sh In ActiveWorkbook.Worksheets Select Case sh.Name Case "シート2" Set srcRange = sh.Range("A1").CurrentRegion srcRange.Copy destRange Set destRange = destRange.End(xlDown).Offset(1, 0) Case "シート3", "シート4", "シート5", "シート6" Set srcRange = sh.Range("A1").CurrentRegion Set srcRange = Intersect(srcRange, srcRange.Offset(1, 0)) srcRange.Copy destRange Set destRange = destRange.End(xlDown).Offset(1, 0) Case Else '何もしない End Select Next sh End Sub

gx9wx
質問者

お礼

何度も何度もすいませんでした。 説明が悪くてすいませんでした。 >シート1のA1から貼り付けて良いのですね。 はいそうです。 1行目は項目行なんです。 ですからシート1は一旦全部クリアしてまっさらにして シート2は全行を シート1の1行目から貼付。 これで1行目がまた項目行になります。 でシート3~6はもう項目行は不要なので 2行目~最終行を 貼り付けていきます。 今回の記述で思ったとおりに動きました。 またシート名を変更して他にも流用が可能です。 どうもありがとうございました。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO2です。 >シート2をみかんに変更するだけで動くのでしょうか?  ⇒シート名を拠り所にしているので動きません。   前提として、シート構成が左から「シート1」→「みかん」~「パイン」(この部分は任意)→「その他シート」順ならば以下のコードで可能です。 Sub シート結合() Application.ScreenUpdating = False Sheets(1).Cells.Clear Sheets(2).Range("1:1").Copy Sheets(1).Range("A1") For i = 2 To 6 With Sheets(i) 最終行 = .Cells(Rows.Count, 1).End(xlUp).Row 最終列 = .Cells(1, Columns.Count).End(xlToLeft).Column If 最終行 >= 2 Then 開始行 = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range(Cells(2, 1), Cells(最終行, 最終列)).Copy _ Sheets("シート1").Cells(開始行, 1) End If End With Next Sheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub

gx9wx
質問者

お礼

思ったとおりできました。 どうもありがとうございました。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#1です。コードをご覧になれば分かると存じますので、シート名をお好きな様に変更してお使い下さい。 Sub データ更新3() Dim sh As Worksheet Dim destRange As Range, srcRange As Range With Sheets("シート1") If .Range("A2").Value = "" Then Set destRange = .Range("A2") Else Set destRange = .Range(.Range("A2"), .Range("A2").End(xlToRight)) Set destRange = .Range(destRange, destRange.End(xlDown)) destRange.ClearContents Set destRange = destRange.Cells(1) End If End With For Each sh In ActiveWorkbook.Worksheets Select Case sh.Name Case "シート2" Set srcRange = sh.Range("A1").CurrentRegion srcRange.Copy destRange Set destRange = destRange.End(xlDown).Offset(1, 0) Case "シート3", "シート4", "シート5", "シート6" Set srcRange = sh.Range("A1").CurrentRegion Set srcRange = Intersect(srcRange, srcRange.Offset(1, 0)) srcRange.Copy destRange Set destRange = destRange.End(xlDown).Offset(1, 0) Case Else '何もしない End Select Next sh End Sub

gx9wx
質問者

お礼

ありがとうございます。 思ったとおり動きました。 ただ、 シート2は1行目から最終行を シート1の1行目から転記、 シート3~6は2行目から最終行を シート1の最終行(前回の転記後の最終行)から転記なのですが 一番最初の シート2をシート1に転記する所で シート1の2行目から転記されています。 この時点でシート1の1行目が空白です。 よって転記完了時(シート2~6までが転記された状態) シート1の1行目が空白行になっています。 記述のどこを修正していいかよく分かりません。 申し訳ありません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 マクロ記録のコードは操作をシリアルに記録しているだけですから短くするのは難しい。 サンプルですが、以下のコードを標準モジュールに貼り付けてお試しください。 Sub シート結合() Application.ScreenUpdating = False Sheets("シート1").Cells.Clear Sheets("シート2").Range("1:1").Copy Sheets("シート1").Range("A1") For i = 2 To 6 With Sheets("シート" & Application.Dbcs(i)) 最終行 = .Cells(Rows.Count, 1).End(xlUp).Row 最終列 = .Cells(1, Columns.Count).End(xlToLeft).Column If 最終行 >= 2 Then 開始行 = Sheets("シート1").Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range(Cells(2, 1), Cells(最終行, 最終列)).Copy _ Sheets("シート1").Cells(開始行, 1) End If End With Next Sheets("シート1").Activate Range("A1").Select Application.ScreenUpdating = True End Sub

gx9wx
質問者

お礼

ありがとうございました。 申し訳ありません。 シート2~6ですが シート名は変更されていました。 シート2:みかん シート3:いちご シート3:りんご シート4:バナナ シート5:パイン という感じです。 記述の中には シート1とシート2しか出ていませんが シート2をみかんに変更するだけで動くのでしょうか?

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

短さを狙ってやってみました。アクティブワークブックには、シート1~6しか存在しない事を前提にしています。 (というか、処理対象外のシートが存在しない事を前提にしています) もっと分かり易い回答が、他の方からあると存じます。 Sub データ更新2() Dim sh As Worksheet Dim destRange As Range, srcRange As Range With Sheets("シート1") If .Range("A2") = "" Then Set destRange = .Range("A2") Else Set destRange = .Range(.Range("A2"), .Range("A2").End(xlToRight)) Set destRange = .Range(destRange, destRange.End(xlDown)) destRange.ClearContents Set destRange = destRange.Cells(1) End If End With For Each sh In ActiveWorkbook.Worksheets If sh.Name <> "シート1" Then Set srcRange = sh.Range("A1").CurrentRegion If sh.Name <> "シート2" Then Set srcRange = Intersect(srcRange, srcRange.Offset(1, 0)) srcRange.Copy destRange Set destRange = destRange.End(xlDown).Offset(1, 0) End If Next sh End Sub

gx9wx
質問者

お礼

>短さを狙ってやってみました。 >アクティブワークブックには、シート1~6しか存在しない事を前提にしています。 >(というか、処理対象外のシートが存在しない事を前提にしています) 申し訳有りません。 シートは1から10まであります。 その中のシート2~6をシート1に転記したいです。 どうもありがとうございました。

関連するQ&A

  • エクセル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]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • エクセル VBA 繰り返し コピー貼り付け

    以下を繰り返し作業をOffsetを使用して行いたいのですがどうすればいいでしょうか? Sheets("Sheet1").Select Range("A1:C1").Select のA1:C1以下へA1000:C1000ぐらいあります。 Sheets("Sheet2").Select Range("G1").Select は貼り付けたセル3つの数字の組み合わせで公式に使う計算期間がまちまちですので公式を張り付けたり出来ません。 D1の解を heets("Sheet1").Select Range("D1").Select に貼り付けてA1:C1以下1000までの結果を評価出来るようにしたいのですが! ' Macro1 Macro Sheets("Sheet1").Select Range("A1:C1").Select Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D1").Select ActiveSheet.Paste Range("A2:C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Range("A3:C3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D3").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

  • 複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロ

    複数のシートにまたがり、フィルタオプションの設定から値を抽出するマクロを組んでおります。 表示したくないシート(data,output)を非表示にしたら、エラーが出てしまいました。 非表示シートの状態で処理することはできませんでしょうか。 Sub Macro7() Application.ScreenUpdating = False Sheets("data").Select Columns("A:J").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("マップ").Range("E2:N3"), Unique:=False Columns("A:J").Select Selection.Copy Sheets("output").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Sheets("マップ").Select Range("E5").Select ActiveSheet.Paste Range("H4").Select Sheets("data").Select Application.CutCopyMode = False ActiveSheet.ShowAllData Sheets("マップ").Select End Sub

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

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

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 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

  • エクセルのマクロで各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

  • 色々なものを見ながら作っている初心者です。

    色々なものを見ながら作っている初心者です。 よろしくお願いします。 VBAでのエラー対処について 下記のマクロを実行すると、実行時 「Selection.Resize(, Selection.Columns.Count - 2).Select」のところで セルがブランクだった時にエラーが出てします。 対処の方法を教えていただけませんでしょうか? よろしくお願いします。 Sheets("sheetB1").Select Range("A7:C161").Select Application.CutCopyMode = False Selection.ClearContents Sheets("sheetA").Select Range("D12").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Selection.Resize(, Selection.Columns.Count - 2).Select Selection.Offset(0, 1).Select Selection.Copy Sheets("sheetB1").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetA").Select Range("E12").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("B1").Select Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetB2").Select Range("A7:C161").Select Application.CutCopyMode = False Selection.ClearContents Sheets("sheetA").Select Range("J12").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToLeft)).Select Selection.Resize(, Selection.Columns.Count - 2).Select Selection.Offset(0, 1).Select Selection.Copy Sheets("sheetB2").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheetA").Select Range("K12").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("steetB2").Select Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=Fals

  • マクロで住所録を抽出して、別シートにコピーするのに

    マクロで住所録を抽出して、別シートに抽出したデータをバラバラに貼り付けたいです。 当方、マクロ初心者なので、分かりやすく教えてください。 シート1『入力シート』、シート2『印刷シート』、シート3に『客先住所録』とあって、今までは住所録のデータをセル1つずつをコピーしてシート1の入力シートに貼り付けて、シート1から2へは関数の=セル番号として飛ばして、シート2の印刷シートを印刷していました。 せっかく、住所録があるからなんとか簡単にならないかと言われて、初心者ながらマクロを作成しました。住所録のオートフィルタで抽出まではうまく出来たのですが、入力シートにコピー貼付が作成時に抽出した住所録は出来ますが、それ以外の住所で抽出すると出来ません。 どうすれば、いいのかご教授願います。 シート3『客先住所録』 A1 チェック A2 1 A3 B3 C3 D4 E4 F4 1又は空白 会社名 〒 住所 FAX TEL 以下70件ほど住所録入力あり。 シート1『入力シート』 G4に〒 G5に住所 K6に電話番号 Y6にFAX G7に会社名 にコピーしたいです。 自分が作成したマクロは Range("A3:F70").Select Range("A3:F48").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("A1:A2"), Unique:=False Range("B7").Select Selection.Copy Sheets("入力シート").Select Range("G7:AF7").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("C7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("I4:AH4").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("D7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("G5:AH5").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("E7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("K6:T6").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("F7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("Y6:AH6").Select ActiveSheet.Paste End Sub どう治せば良いのか、宜しくお願いします。 宜しくお願いします。

  • 複数シートの内容を1つのシートに集計するVBA

    お世話になります。 ExcelのVBAについて質問させていただきます。 集計.xlsというブックがあります。 この中に[集計]、[東京支店]、[名古屋支店]、[大阪支店]というシートがあります。 やりたい事は[東京支店]、[名古屋支店]、[大阪支店]のシート内容を[集計]シートに順番にコピペしていきたいのです。 下記のVBAを組んでみましたがうまくいきません。 [東京支店]はうまくコピペ出来ますが、[名古屋支店]がコピペされず、[大阪支店]はコピペされますが東京支店のデータのすぐ下ではなく、50行ぐらい下の位置にコピペされてしまいます。 各支店のシートの内容は次の通りです。この内容を[集計]シートにコピペしたいのです。 [日付] [担当者] [金額] 11/1 田中 100円 11/2 山田 500円 どなたかご教授いただけますでしょうか? 環境 Windows XP SP3 Excel2003 ****VBA**** Sub test() Dim 下 As Integer '東京支店 Sheets("東京支店").Select Range("A2").Select '東京支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートに貼り付け Sheets("集計").Select Range("A2").Select ActiveSheet.Paste '次は名古屋支店 Sheets("名古屋支店").Select Range("A2").Select '名古屋支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Range("A1").CurrentRegion.Rows.Count + 1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 & "," & 0).Select ActiveSheet.Paste '最後に大阪支店 Sheets("大阪支店").Select Range("A2").Select '大阪支店シートの見出し以外の全データをコピー Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy '集計シートの最下行を取得 Sheets("集計").Select 下 = Range("A1").CurrentRegion.Rows.Count + 1 '集計シートに貼り付け Range("A2").Select ActiveCell.Offset(下 & "," & 0).Select ActiveSheet.Paste End Sub

専門家に質問してみよう