• ベストアンサー

1行から2行へのコピーなんですが

データベースとなるシートの任意の連続する複数行を違うシートの2行にコピーしたいと考えています。 要は、 番号、氏名、社員番号、生年月日・・・と続く1行のデータを 印刷するためのシートへ 番号、社員番号・・・ 氏名、生年月日・・・のように2行にしたいのです。 1行から1行であればエクセルの基本的な機能で出来ますが、 1行から複数の行へ、終わったら次の行へ移る、の2点でつまづいております。 マクロ初心者へアドバイスお願いします。

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

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

A列からD列までデータがあるとして、2行目から始まってるとしますが。 考え方としては以下のようなものでしょうか。 ダミーデータでお試しください。 Sub aaa() Dim r As Long Dim k As Long r = 2 k = 1 Do While Cells(r, 1) <> "" Cells(r, 1).Copy Cells(k, 10) Cells(r, 2).Copy Cells(k, 11) Cells(r, 3).Copy Cells(k + 1, 10) Cells(r, 4).Copy Cells(k + 1, 11) r = r + 1 k = k + 2 Loop End Sub 任意の連続行、とありますから、x行目~y行目 としたいのならば、どこかでそれを取得して For - Next で回すなり、適当にアレンジすればよいのかもしれません。 貼付先も別シートなら適切に書き換えてください。 つまり、上の例で言うなら、 r は元データの行番号 k は貼付先の行番号ですから、 r は1づつ増やしてますし、k は 2づつ増やしてます。 ご意向にそぐってないようならばすみません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

これVBAの質問?表題に明記のこと。 Sheet2に書き出しをする行(番号)ポインタ変数(=k)をもつ。 For Nextで上から1行ずつ捕らえて、 Sheet1(原データ)1行読んで、Sheet2の第k行と第K+1行に適当にセル的に振り分ける。 Worksheets("Sheet2").Cells(k,"A")=Worksheets("Sheet1").Cells(i,"A") Worksheets("Sheet2").Cells(k+1,"A")=Worksheets("Sheet1").Cells(i,"B") といった風に。 そしてk=k+2 にしてSheet1の次の行に処理を移す。 何も難しい点は無い。シコシコセルのSheet1のデータをSheet2のセルに代入するだけ。

feedme
質問者

お礼

ご回答いただいた皆様、ありがとうございます。 なんとなく先が見えてきました。 なにか、いろいろ出来そうですね。 面白くなってきました。

  • van111
  • ベストアンサー率14% (1/7)
回答No.2

回答者1さんと似ておりますが、 1行をコピーし、別シートへ貼り付けをする際、 何行目から2行目に移すのでしょうか? そこが不十分な為私も勝手に上記質問を参考に作成させていただきましたので 参考にしてください。 Sub test() i = 1: t = 1 Sheets.Add Before:=Worksheets(1), Count:=1 With Worksheets(2) Do While .Cells(i, 1) <> "" .Cells(i, 1).EntireRow.Copy Destination:=Cells(t, 1) Range(Cells(t, 3), Cells(t, 4)).Cut Destination:=Cells(t + 1, 1) i = i + 1 t = t + 2 Loop End With End Sub

関連するQ&A