ママのスキンケアのお悩みにおすすめアイテム

以下のマクロを組んだのですが、求めている動作になりません。

Dim a As Integer
Dim b As Integer

最終行 = Sheets(2).Range("D2").Value
ピッチ = Sheets(2).Range("M1").Value

For a = 5 To 最終行 Step ピッチ
For b = 2 To (最終行 - 3) * 2 Step 100
Sheets(2).Cells(a, 4).Resize(ピッチ, 2).Copy
Sheets(3).Cells(b, 1).Resize(ピッチ, 2).PasteSpecial Paste:=xlPasteValues
Next b
Next a

シート1のデータ(A)を50行ずつコピーしてシート2に貼り付けたいです。
シート1にはもう一つデータ(B)があり、それも50行ずつコピーしてシート2に貼り付けたいです。
これら2つのデータはシート2に交互に貼り付けたいです。
(A)1~50

(B)1~50

(A)51~100

(B)51~100
そのため、データ(A)を50ずつコピーし100行ずつペーストするのを、データ(B)用も同じようにマクロを組めば良いと考えました。
説明下手で申し訳ありませんが、解決策をご教授願いたいです。

質問者からの補足コメント

  • ピッチ = Sheets(2).Range("M1").Value=50です。

      補足日時:2020/09/07 13:39
  • 目を通していただきありがとうございます。
    シート1のDとE列にデータ(A)、JとK列にデータ(B)が並べられています。
    各々2列50行ずつコピペしたいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/09/07 13:53

A 回答 (2件)

No1です



不明点がいろいろあるので、以下、適当に仮定してサンプル的に作成してあります。
 ・コピー元のスタート行は1行目からとする
 ・データ(A)とデータ(B)の量が不明ですが、どちらかが少なくても詰めるようなことはせず、空白行が50行できても、残りのデータをその後にペーストする。
 ・説明文では「シート1」「シート2」となっていますが、コードは「Sheets(2)」「Sheets(3)」となっているようなので、後者を採用
 ・ピッチはとりあえず50行固定で、コード中に直接定地してあります。

※ 要領は以下の様な感じで可能と思いますので、仮定が違っている部分は調整してください。

Sub Sample_11878438()
Dim mxR As Long, rw As Long
Dim dR As Range

Const p = 50
Set dR = Worksheets("Sheet3").Range("A1")

With Worksheets("Sheet2")
mxR = .Cells(Rows.Count, 4).End(xlUp).Row
mxR = Application.Max(mxR, .Cells(Rows.Count, 10).End(xlUp).Row)

For rw = 1 To mxR Step p
 dR.Resize(p, 2).Value = .Cells(rw, 4).Resize(p, 2).Value
 dR.Offset(p).Resize(p, 2).Value = .Cells(rw, 10).Resize(p, 2).Value
 Set dR = dR.Offset(p * 2)
Next rw
End With
End Sub
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
ご教授頂いたものを入力しましたが、思た通りには行きませんでした。
当方VBA初心者なのもあり、修正箇所の見極めも時間がかかりそうです。
(自分なりに手を加えましたが、うまくいきませんでした)
同じ内容ですが、分かりやすく書いたつもりの質問を新たに投稿いたしました。
失礼でなければ、そちらで新たに回答していただけないでしょうか?
お手数をおかけし、申し訳ございません。

お礼日時:2020/09/07 15:36

こんにちは



よくわかっていませんが、ご提示の二重ループは(多分)まとはずれのような気がします・・・

シート2への貼り付けたい順序はわかりますが、元となっている「シート1上のデータAとデータB」のレイアウトがどうなっているのかさっぱりわかりません。
それがはっきりすれば、(想像するところ)単純なコピペの繰り返しでできそうな気がしますけれど‥‥
この回答への補足あり
    • good
    • 0
この回答へのお礼

目を通していただきありがとうございます。
シート1のDとE列にデータ(A)、JとK列にデータ(B)が並べられています。
各々2列50行ずつコピペしたいです。

お礼日時:2020/09/07 13:57

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング