プロが教えるわが家の防犯対策術!

Excel マクロ VBA 2つのsheetからセルをコピーして集計シートにコピペする方法

マクロでsheet1のB2:C2を集計シートのA2:B2へコピーし、sheet1のB:C列の最終行を集計シートのC2:D2へコピペ
sheet1のD2:E2を集計シートのA3:B3、sheet1のD:E列の最終行を集計シートのC3:D3へコピペ
↑これをsheet1の1番右の列の2行目が空欄になるまで繰り返す。

次にsheet2のB2:C2を集計シートのA10:B10へコピペ
sheet2のB:C列の最終行を集計シートのC10:D10へコピぺ
↑これもsheet1同様にsheet2の1番右の列の2行目が空欄になるまで繰り返す。

という処理をやりたいのですが、どなたか詳しい方、ご教授いただけないでしょうか?

A 回答 (1件)

こんにちは!



>次にsheet2のB2:C2を集計シートのA10:B10へコピペ・・・

すなわちSheet1のデータは9行目までの表示!というコトですね?
(Sheet1に関してはP列以降にデータがあっても、N・O列までの処理で終了)

一例です。標準モジュールにしてください。

Sub Sample1()
Dim wS1 As Worksheet, wS2 As Worksheet
Dim j As Long, cnt As Long
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
With Worksheets("集計")
.Cells.ClearContents
'▼Sheet1の処理//
cnt = 1
For j = 2 To wS1.Cells(2, Columns.Count).End(xlToLeft).Column Step 2
cnt = cnt + 1
wS1.Cells(2, j).Resize(, 2).Copy .Cells(cnt, "A")
wS1.Cells(Rows.Count, j).End(xlUp).Resize(, 2).Copy .Cells(cnt, "C")
If cnt = 9 Then Exit For '←「集計」Sheetの9行目まで埋まるとループから抜ける
Next j
'▼Sheet2の処理//
cnt = 9
For j = 2 To wS2.Cells(2, Columns.Count).End(xlToLeft).Column Step 2
cnt = cnt + 1
wS2.Cells(2, j).Resize(, 2).Copy .Cells(cnt, "A")
wS2.Cells(Rows.Count, j).End(xlUp).Resize(, 2).Copy .Cells(cnt, "C")
Next j
End With
End Sub

※ Sheet2に関しては2行目のデータがある列まですべて表示されます。m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます!
バッチリ出来ました!
本当に助かりました!

お礼日時:2016/11/18 11:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!