エクセルのマクロは超初心者のため、難しいことは全く分かりません。
よろしくお願いいたします。 m(_ _)m
同じbook内に複数のsheetがあります。
そのsheetは同じ型式のデータベースなのですが、sheetによって行が違います。
そのsheetのデータを一つのシートにコピー(一番上の先頭行はデータベースの名称でコピーしたくありません)
をして一覧でまとめたいのですが、方法がわかりません。
sheet数が多いので、一つずつコピー→ペーストをするのが大変なので…どうぞよろしくお願いします。
No.4
- 回答日時:
あなたが目で見て判る,たとえば今のシートは何列から何列まで使っているのかとか,タイトル行は1行なのか2,3行なのか,そもそも表はA1セルを左上にして置いてあるのかとか,そういった事だけでも具体的な情報をご相談に書いてみると良いですね。
サンプル:
どのシートもA:F列を使っている
どのシートも1行目をタイトル行にしている
どのシートも2行目から実データが入っている
どのシートも少なくともA列は,表としてデータを入れてる範囲の一番下のセルが空欄になってたりしないで,ちゃんとデータが入っている。
作成例:
sub macro1()
dim i
worksheets.add before:=worksheets(1)
worksheets(2).range("1:1").copy destination:=worksheets(1).range("A1")
for i = 2 to worksheets.count
worksheets(i).range("A2:F" & worksheets(i).range("A65536").end(xlup).row).copy _
destination:=worksheets(1).range("A65536").end(xlup).offset(1)
next i
end sub
No.3ベストアンサー
- 回答日時:
マクロの自動記録でシート2枚分行ってみました
一番左に一覧シートがあり、タイトル行が入っている
データベースはA列が埋っているという条件で
Sub Macro1()
Sheets("一覧").Select '「一覧」シートを選ぶ
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
Range("A2").Select 'A2セルの選択
Range(Selection, Selection.End(xlToRight)).Select '[Shift]+[Ctrl]+[→]
Range(Selection, Selection.End(xlDown)).Select '[Shift]+[Ctrl]+[↓]
Selection.Copy ''[Ctrl]+[C]コピー
Sheets("一覧").Select '「一覧」シートを選ぶ
Range("A65535").Select 'A65535セルの選択
Selection.End(xlUp).Select '[Ctrl]+[↑]
ActiveCell.Offset(1, 0).Range("A1").Select '[↓]
ActiveSheet.Paste '[Ctrl]+[V]貼り付け
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
Range("A2").Select 'A2セルの選択
Range(Selection, Selection.End(xlToRight)).Select '[Shift]+[Ctrl]+[→]
Range(Selection, Selection.End(xlDown)).Select '[Shift]+[Ctrl]+[↓]
Sheets("一覧").Select '「一覧」シートを選ぶ
Range("A65535").Select 'A65535セルの選択
Selection.End(xlUp).Select '[Ctrl]+[↑]
ActiveCell.Offset(1, 0).Range("A1").Select '[↓]
ActiveSheet.Paste '[Ctrl]+[V]貼り付け
Application.CutCopyMode = False '[Esc]
End Sub
改善案
Sub Macro2()
Dim n As Long '変数nの定義
Dim i As Long '変数iの定義
Sheets("一覧").Select
'シートの枚数-1回分、全体を繰り返す
For n = 1 To Worksheets.Count - 1 Step 1
'[Ctrl]+F6]を押す回数が増えていることに着目
For i = 1 To n Step 1
ActiveSheet.Next.Select
Next i
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("一覧").Select
Range("A65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Next n
Application.CutCopyMode = False '[Esc]
End Sub
この回答への補足
CoalTarさん、ご回答ありがとうございます。今教えていただいた情報で惜しいところまでいきました。
教えていただいた内容をもとに例示のマクロに以下のように修正を自分で加えました。
ですが、「[Ctrl]+[F6]右隣のシートへ移動」のところが上手くいかず同じシートを2回コピーして終了となっています。
またbookによって設けているsheet数が違うので、sheetを設けた分コピーをしたいのですが、どのような手があるのか教えていただけると助かります。
もしかしたらご提示いただいた改善案のところにヒントがあるのかもしれませんが、まだ力不足で理解できていない状態です。ネットでも調べてみたのですが、同じく力不足で読み解くことができませんでした。
他人だよりでも申し訳ありませんが、お手すきのときにまた追記いただけると助かります。
よろしくお願いします。
【今のマクロの状態(いただいた例示をもとに少し改造しまいた)】
Sub まとめコピー()
Sheets("一覧").Select '「一覧」シートを選ぶ
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
Range("A2:P2").Select 'A2セルの選択
Range(Selection, Selection.End(xlDown)).Select '[Shift]+[Ctrl]+[↓]
Selection.Copy ''[Ctrl]+[C]コピー
Sheets("一覧").Select '「一覧」シートを選ぶ
Range("A65535").Select 'A65535セルの選択
Selection.End(xlUp).Select '[Ctrl]+[↑]
ActiveCell.Offset(1, 0).Range("A1").Select '[↓]
ActiveSheet.Paste '[Ctrl]+[V]貼り付け
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
ActiveSheet.Next.Select '[Ctrl]+[F6]右隣のシートへ移動
Range("A2:P2").Select 'A2セルの選択
Range(Selection, Selection.End(xlDown)).Select '[Shift]+[Ctrl]+[↓]
Sheets("一覧").Select '「一覧」シートを選ぶ
Range("A65535").Select 'A65535セルの選択
Selection.End(xlUp).Select '[Ctrl]+[↑]
ActiveCell.Offset(1, 0).Range("A1").Select '[↓]
ActiveSheet.Paste '[Ctrl]+[V]貼り付け
Application.CutCopyMode = False '[Esc]
End Sub
No.2
- 回答日時:
おはようございます
>そのsheetは同じ型式のデータベースなのですが、sheetによって行が違います。
行数は違っても列数は同じとして回答します。
「Cells」と「Range」を使った範囲指定で出来ます(方法はいろいろとありますので他の方は別の方法を紹介するかもしれません)。
要素になりそうなことを説明していきますので、一つ一つ試してみて、どういう動作になるのか確認してみてください。
1.「A2:Z200」をコピーする
Sub sumple()
Range("A2:Z200").Copy
End Sub
2.最終行を取得する
Sub sumple()
Dim LastRow As Long
LastRow = [A65536].End(xlUp).Row
MsgBox LastRow
End Sub
…ただし、「A列は必ず値が入っている」および「65536行は使っていない」が条件です。
65536というのは、Excel2003までのバージョンの最終行です。
3.A~Z列の2行目から最終列までコピーする
Sub sumple()
Dim LastRow As Long
LastRow = [A65536].End(xlUp).Row
Range("A2", Cells(LastRow, "Z")).Copy
End Sub
4.複数のシートに同じ(同じような)処理をする
Sub sumple()
Dim MyWorksheet As Worksheet
For Each MyWorksheet In Worksheets
MyWorksheet.[A1] = "Hallo World"
Next MyWorksheet
End Sub
--------------
セルの指定の仕方には
・Range (セルの範囲を指定する)
・Cells (行番号、列番号でセルを指定する)
・[] (セル・セル範囲を直接指定する)
の3つがあります。いろいろと試して見てください。
p(^^)q
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルでのコピーペースト 6 2022/09/03 07:14
- スーパー・コンビニ 「コンビニで エクセルをプリントアウト」することができますか? 8 2022/06/16 15:54
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの下部のシートタブの...
-
エクセルでセルの書式設定がで...
-
Excelで大量の2000個のリストを...
-
ワークシートの行が途中から表...
-
エクセルで別シートの同じ位置...
-
エクセルで数式は残したまま他...
-
VBA アクティブでないシートの...
-
EXCELで複数シート作成後、全シ...
-
エクセルで選択した行以外を削...
-
ロックしたセルのコピー&貼り付け
-
【エクセル】数式のセル番地を...
-
【エクセル】表から条件に合っ...
-
エクセルで勤務表の作成
-
1から5までの整数のみ入力可に...
-
セルに背景色がある行を別シー...
-
Excelで保護のかかったシートの...
-
エクセルマクロ コピー元と貼...
-
EXCELでコピーしたグラフのデー...
-
エクセル2010について質問です...
-
VBAで新しいエクセルファイルに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルでセルの書式設定がで...
-
エクセルの下部のシートタブの...
-
EXCELでコピーしたグラフのデー...
-
シート全体を他のブックのシー...
-
ワークシートの行が途中から表...
-
ロックしたセルのコピー&貼り付け
-
excelで勝手にテキストボックス...
-
Excelで保護のかかったシートの...
-
エクセルで数式は残したまま他...
-
VBA アクティブでないシートの...
-
Excelで大量の2000個のリストを...
-
エクセルで打ち込んだ数字を自...
-
シート保護してても並び替えを...
-
【エクセル】表から条件に合っ...
-
【エクセル】数式のセル番地を...
-
シート保護したExcelへの画像貼...
-
コピー&ペーストすると、VLOOK...
-
EXCELで複数シート作成後、全シ...
-
エクセルで多数のシートをまと...
おすすめ情報