
VBA入門者です。宜しくお願いします。
以下の作業を、シート(1)~(3)に繰り返したいのです
◎シート(”レポート”)列A,C,F…40列まで3列置きにコピー
◎シート(1)のA3に貼付
初歩的な構文だとシートごとに設定するのが大変です(汗)
下の構文をコンパクトにまとめ、
できれば・・・
シート(2)には(B4,B23)~、シート(3)には(C4,C23)~同じ流れでコピペする動作も
まとめたいのです。
With Worksheets("レポート")
.Range("A4:A23").Copy
Worksheets("1").Range("A3").PasteSpecial xlPasteValues
.Range("C4:C23").Copy
Worksheets("1").Range("B3").PasteSpecial xlPasteValues
.Range("F4:F23").Copy
Worksheets("1").Range("C3").PasteSpecial xlPasteValues
.Range("I4:I23").Copy
Worksheets("1").Range("D3").PasteSpecial xlPasteValues
'……40列まで続く
End With
No.1ベストアンサー
- 回答日時:
こんにちは!
>'……40列まで続く
とは「レポート」Sheetの40列(AN列)までというコトでしょうか?
それともデータがある限り3列毎に40回同じ操作を繰り返す!というコトなのでしょうか?
質問文では
A・C・F・I・・・
となっていますので、
A列はそのまま値をコピー&ペーストし、C列以降3列毎というコトですよね?
二つやってみました。
「Sample1」がAN列までで、「Sample2」がデータがある限りC列以降3列毎に40回コピー&ペーストしています。
Sub Sample1()
Dim j As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("1")
With Worksheets("レポート")
.Range("A4:A23").Copy
wS.Range("A3").PasteSpecial Paste:=xlPasteValues
cnt = 1
For j = 3 To 40 Step 3 '//C列~AN列まで3列毎
cnt = cnt + 1
Range(.Cells(4, j), .Cells(23, j)).Copy
wS.Cells(3, cnt).PasteSpecial Paste:=xlPasteValues
Next j
End With
End Sub
Sub Sample2()
Dim j As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("1")
With Worksheets("レポート")
.Range("A4:A23").Copy
wS.Range("A3").PasteSpecial Paste:=xlPasteValues
For j = 3 To .UsedRange.Columns.Count Step 3 '//C列~最終列まで3列毎
If cnt = 40 Then Exit For '//40回繰り返したらループから抜ける★
cnt = cnt + 1
Range(.Cells(4, j), .Cells(23, j)).Copy
wS.Cells(3, cnt + 1).PasteSpecial Paste:=xlPasteValues
Next j
End With
End Sub
こんな感じで良いのでしょうか?m(_ _)m
tom04さんへ
ありがとうございます!!
【Sample1】を参考にさせていただきました!
本当に助かりました!
これで、上手く行きそうです!
感謝♡
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
Excel VBAでn行毎に行の選択
Excel(エクセル)
-
VBA 連続行データを5行ずつ隣の列に貼り付ける
Excel(エクセル)
-
-
4
マクロの「1列おきに貼り付け処理を行う方法」を知りたいです。
Excel(エクセル)
-
5
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
6
エクセルで1個飛ばしで、一括でコピペする方法は有りますか?
Excel(エクセル)
-
7
Excelで行ごとコピー、同じ行を3行にしたい
Excel(エクセル)
-
8
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
9
一行おきにコピーするマクロが知りたい
Excel(エクセル)
-
10
エクセル VBA 指定の範囲内をコピー 複数行あけて貼り付けを指定範囲内で
Excel(エクセル)
-
11
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
12
エクセル VBA・マクロ コピー 貼り付け 飛び飛び
Excel(エクセル)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
15
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
16
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
17
Excelの連続データから数行おきのコピー
Excel(エクセル)
-
18
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
19
【VBA】全ての複数シートから指定した列をコピー、新しいブックの1シートに抽出する
Visual Basic(VBA)
-
20
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
VBA 何かしら文字が入っていたら
-
IIF関数の使い方
-
複数の列の値を結合して別の列...
-
エクセルVBAで、フォルダ内のパ...
-
URLのリンク切れをマクロを使っ...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
-
セルに値が入っていた時の処理
-
C# dataGridViewの値だけクリア
-
VB2005EE:DataGridViewでチェ...
-
VBAの構文 3列置きにコピーし...
-
オートフィルタをマクロで作成...
-
Changeイベントでの複数セルの...
-
VBAで別のブックの値をVlookup...
-
Worksheets メソッドは失敗しま...
-
複数csvを横に追加していくマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを使って検索したセルをコピ...
-
DataGridViewに空白がある場合...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
おすすめ情報