エクセルで同じ書式の3枚のシートを「集計」シートに統合したいのですが、マクロの記録で作成したコードを試行錯誤して最終行に追加は出来るのですが、最終行の1つ下の行が取得できません。
最後の行が上書きされて各シートの最終行が抜けてしまいます。
Range(Selection, Selection.End(xlDown)).Select
に .Offset(1)を追加すれば出来る事は分かっているのですがどうにもうまくいかずHELPお願いします。
具体的には、3枚のシートの6行目以降最後の行までをコピーして「統合」シートの6行目以降に3枚のシートを統合したいのです。
No.6ベストアンサー
- 回答日時:
すみません。
"結果3" と "結果4" シートの比較だけでなく、
"結果3" と "結果1" シートの比較
"結果3" と "結果2" シートの比較
も行っていただけますでしょうか。
誠に申し訳あり有りません。
結果4のシートは慌てて結果3のシートのコピのまま試行しましたので、結果3が2回ではなくちゃんと結果4がコピペされていました。
本当に申し訳なく、恥ずかしく・・・
最後まで本当にお手数をお掛けしありがとうございました。
自分でもおかしいと思い、昼休みに色々試行していて気づきました。
お輪にしようとしたら、既にご返答がついていました。
No.4
- 回答日時:
>2枚の場合はうまくいったのですが、4枚にすると3枚目のシートが2回コピペされてしまいます。
4枚のシート名は全て異なるシート名でないといけません。
arr = Array("○○", "△△","□□","□□") のように
3枚目と4枚目が同じ名前になっていませんでしょうか。
あなたが設定した、arr = Array(・・・) の行を
提示していただけませんでしょうか。
ありがとうございます。
シート名は下記の通りです。
>arr = Array("結果1", "結果2", "結果3", "結果4")
表示がおかしくなるようなのでシート名のみ下記します。
結果1、結果2、結果3、結果4
です。
No.3
- 回答日時:
>追加の質問になって申し訳ありませんがシートが変わった場合、どこを変更>すれば良いのでしょう?
シートが2枚の場合、シート名:○○ と シート名:△△ をコピーしたなら
arr = Array("○○", "△△") のようにします。
シートが4枚の場合、
シート名:○○ と シート名:△△ シート名:□□ と シート名:☆☆ をコピーしたいなら
arr = Array("○○", "△△","□□","☆☆") のようにします。
何度もすみません。
2枚の場合はうまくいったのですが、4枚にすると3枚目のシートが2回コピペされてしまいます。
申し訳ありませんがもう一息だと思うので何卒宜しくお願い致します。
No.2
- 回答日時:
>シート名を変えて早速試してみたのですが、
>Set ws = Worksheets(sname)
>で止まってしまいます。
シート名を正しく設定していない可能性があります。
本当に実在するシート名か、再度確認してください。
arr = Array("Sheet1", "Sheet2", "Sheet3")
の箇所のシート名をあなたの環境に合わせます。
No.1
- 回答日時:
3枚のシート名が不明なので、Sheet1,Sheet2,Sheet3としておきました。
シート名:統合 に集計します。
いかのようにしてください。
3つの各シートの最終行はA列を基準にして最終行を求めています。
Public Sub 統合へ集計()
Dim arr As Variant
Dim sname As Variant
Dim ws As Worksheet
Dim ms As Worksheet
Dim mrow As Long: mrow = 6
Set ms = Worksheets("統合")
ms.Rows("6:" & Rows.Count).ClearContents
arr = Array("Sheet1", "Sheet2", "Sheet3")
For Each sname In arr
Set ws = Worksheets(sname)
Call shukei(ws, ms, mrow)
Next
End Sub
Private Sub shukei(ws As Worksheet, ms As Worksheet, mrow As Long)
Dim maxrow As Long
Dim wrow As Long
maxrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'A列目の最終行を求める
For wrow = 6 To maxrow
ws.Rows(wrow).Copy ms.Rows(mrow)
mrow = mrow + 1
Next
End Sub
早々のご回答ありがとうございます。
シート名を変えて早速試してみたのですが、
>Set ws = Worksheets(sname)
で止まってしまいます。
何処か他に注意すべき箇所あれば教えて頂きたく。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Excel(エクセル) 別のシートの最終行の値を参照するには 5 2022/12/15 13:18
- Excel(エクセル) エクセルで保存時に全部のシートの最終行をコピーして数値で貼り付けたい 3 2023/08/14 15:49
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルでファイルを開いたと...
-
EXCEL:同じセルへどんどん足し...
-
Excelで金銭出納帳。繰越残高を...
-
別シート参照のセルをシート毎...
-
エクセルの複数シートの保護を...
-
スプレッドシートの関数VLOOKUP...
-
EXCELで1ヶ月分の連続した日付...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
VBAでシートコピー後、シート名...
-
エクセルで前シートを参照して...
-
エクセル 別シートのアクティ...
-
【Excel マクロ】関数での空白...
-
エクセル:ブックを開くとき、...
-
別シートの最終行に貼り付けす...
-
【Excel マクロ】 同一book内で...
-
エクセルVBAでパスの¥マークに...
-
複数シートの色付きセルがある...
-
シート追加でシート名が変わっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
Accessのスプレッドシートエク...
-
エクセルのシート名をリスト化...
-
複数シートの特定の位置に連番...
-
Excelのシートを、まとめて表示...
-
エクセル 計算式も入っていない...
-
スプレッドシートの関数VLOOKUP...
おすすめ情報
失礼しました。
シート数はBookによって確定ではないので、試しにシート数を2枚のデモシートで試していましたが、シートを3枚にしたら期待通りに動きました。
追加の質問になって申し訳ありませんがシートが変わった場合、どこを変更すれば良いのでしょう?
当方はシート毎にVBAを繰り返すものと思っていたので、必要回数のコードで追加、削除するつもりの質問でした。