• ベストアンサー

一定の規則でエクセルに並んでいる表を、別シートに元のSheetに設定されているNO順で貼り付ける

少しややこしいマクロなのですが、 Sheet1に表が左から順に飛び飛びで並んでいます。 1番目の表の1行目の項目値がNO.1で、2番目の表の1番目がNO.2、3番目の表の1番目がNO.3で。。。。と続いていき、最後の表の1行目までいくと、一番始めの表の2行目に続きます。 それを別シートにNO順に1つの表として完成させるマクロをVBAで作りたいと思っています。 調べ回って途中まではやってみたのですが、一向に進まないので教えて下さい(*_ _) 以下はエラーになったマクロです。 Sub CopyCell() Dim CopySource, PasteDist As Range Dim i As Integer Dim j As Integer Dim k As Integer For i = 1 To 7 For j = 1 To 7 For k = 2 To 33 Step 8 Set CopySource = Sheets(1).Range(Cells(i, k), Cells(i, k + 6)) Set PasteDist = Sheets(2).Range(Cells(j, 1), Cells(j, 7)) PasteDist = CopySource Next k Next j Next i End Sub

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yosha
  • ベストアンサー率59% (172/287)
回答No.2

もう少し、簡単な方法です。 なるべく、あなたの方法に近づけてやってみます。 Sub CopyCell()  Dim i As Integer  Dim j As Integer  Dim k As Integer    For i = 1 To 7      For j = 2 To 33 Step 8        k = k + 1        Sheets(1).Range(Cells(i, j), Cells(i, j + 6)).Copy Destination:=Sheets(2).Cells(k, 1)      Next j    Next i End Sub でいけます。

noname#86919
質問者

お礼

なるほど! 2重ループでできるんですね。 勉強になりました。ありがとうございました <(_ _)>

その他の回答 (1)

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

投稿するカテを間違えてしまいましたか(笑) ソフトウエア→Office系ソフト のところに行くと詳しい方がたくさんいます。 それはさておき。 表の形式がどうなってるか質問文だけでは分からないので、コードから推測してみました。 ・B1セルを起点にして、7行×7列の表がある ・2番目の表は、J1セル起点。(1番目の表との間には1列空白がある?) ・3番目以降も同様に、1列ずつ空白列を入れて、表が5つある でしょうか?このあたりはっきりしたほうが回答は付きやすいです。 また、それを1行づつ別のシートにまとめたいということでいいですか。 新しいシートには、 1番目の表の1行目 2番目の表の1行目 3番目の表の1行目 4番目の表の1行目 5番目の表の1行目 1番目の表の2行目 以下続き、 5番目の表の7行目 でしょうか。であれば、 Sub aaa() Dim k As Integer Dim i As Integer Dim CopySource As Range For i = 1 To 7     For k = 2 To 34 Step 8      Set CopySource = Range(Worksheets(1).Cells(i, k), Worksheets(1).Cells(i, k + 6))     CopySource.Copy Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)    Next k Next i Set CopySource = Nothing Rows(1).Delete End Sub こんなんでどうでしょう。 ※上述どおり、推測で書いてますので、あなたの意図通りになってないかもしれません。ついては試す際には、元データはコピー、保存のうえ、トライしてください。

noname#86919
質問者

お礼

カテ間違ってました(^^;) すみません、説明不足でした。 質問はご指摘のとおりです。 私のわかりにくい説明でそこまで理解して頂き、有難いです。 教えて頂いたコードで実行してみたら、できました! どうもありがとうございました <(_ _)>