
エクセルで同じ書式の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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別シート参照のセルをシート毎...
-
エクセルの複数シートの保護を...
-
エクセル 計算式も入っていない...
-
EXCEL:同じセルへどんどん足し...
-
特定のシートの削除を禁止した...
-
エクセルでファイルを開いたと...
-
前の(左隣の)シートを連続参...
-
VBAで条件によりフォントサイズ...
-
EXCELで1ヶ月分の連続した日付...
-
Excelで同じシートのコピーを一...
-
シートを任意の日付で自動で作...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルで前シートを参照して...
-
シート番号からシート名を取得する
-
シート名が変わっても計算したい
-
Excelで金銭出納帳。繰越残高を...
-
エクセルVBA 串刺し計算の際、...
-
エクセルで複数設定したハイパーリンク先...
-
Excelが開かない!印刷プレビュ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセル 計算式も入っていない...
-
Excel、同じフォルダ内のExcel...
-
EXCEL:同じセルへどんどん足し...
-
VBAでシートコピー後、シート名...
-
複数シートの特定の位置に連番...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
VBAで条件によりフォントサイズ...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルで毎回1枚目のシートを...
おすすめ情報
失礼しました。
シート数はBookによって確定ではないので、試しにシート数を2枚のデモシートで試していましたが、シートを3枚にしたら期待通りに動きました。
追加の質問になって申し訳ありませんがシートが変わった場合、どこを変更すれば良いのでしょう?
当方はシート毎にVBAを繰り返すものと思っていたので、必要回数のコードで追加、削除するつもりの質問でした。