- ベストアンサー
VBAで困ってます
VBA勉強中です。 複数のシートにあるデータを1シートにまとめるマクロを作っています。 ----------------------例-------------------- <SHEET1> <SHEET2> あ 1 か 6 あ 5 か 30 い 2 き 7 い 10 き 35 う 3 く 8 う 15 く 40 え 4 け 9 え 20 け 45 お 5 こ 10 お 25 こ 50 このSHEET1とSHEET2をSHEET3に下記のようにまとめたいのです。 <SHEET3> あ 1 か 6 あ 5 か 30 い 2 き 7 い 10 き 35 う 3 く 8 う 15 く 40 え 4 け 9 え 20 け 45 お 5 こ 10 お 25 こ 50 動作をマクロの記録でみて、その動作を繰り返すようにすればいいのかなと思うのですが。。。なにしろ初心者で困ってます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sheets("Sheet1").Select Range("A1").Select Sheets("Sheet2").Select Range("A1").Select Sheets("Sheet3").Select Range("A1").Select Do Sheets("Sheet1").Select ActiveCell.Copy '相対的にアクティブセルをひとつ下げる処理をいれる Sheets("Sheet3").Select ActiveCell.Paste '相対的にアクティブセルをひとつ下げる処理をいれる Sheets("Sheet2").Select ActiveCell.Copy '相対的にアクティブセルをひとつ下げる処理をいれる Sheets("Sheet3").Select ActiveCell.Paste '相対的にアクティブセルをひとつ下げる処理をいれる Sheets("Sheet1").Select If ActiveCell.Value="" Then Exit Do End If Loop こんな感じでしょうか
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問が不完全、かつ説明不足。例を挙げるのは結構なのだが、文章でも、したいことや、前提を説明しないと、例だけではわからないし、、その内容でプログラムロジックが大幅に変わる。 ーー シート1とシート2は、行単位で、交互(1つずつ)採って一本化すればよいのか(*)。例ではソウ見えるが、何しろ1例だし、質問者もその辺を十分考えて例を作ったとは限らないから、説明が必要。 シート1とシート2で行数が異なるのかどうかも書いてない。 ーー もし、そうなら(*)、第3のシートに 第1の1行目 第2の1行目 第1の2行目 第2の21行目 ・・ という風に、データをとってくれば良いので、聞くほどの事ではない。 ーー 最終行番号をdとして(この出し方はわかるよね。場合によってはシート1とシート2の大きいほうを考える) For i=2 to d シート1のi行をシート3へとってくる シート2のi行をシート3へとってくる Next i 終わり行数がシート1とシート2で異なるときはちょっと工夫して、空白なら とってこない。 ーーー シートが3つ関係するが、コードの上で、きちっとどのシートの セルのことか明記しないといけない。 そのコードは(昨日も質問が出ていたが)わかりますか。
お礼
ありがとうございました!(^^)! ちゃんと動作してくれました。これを元にあとは、いくつかネットで調べたりしてちゃんとしたものが作れました。本当に助かりました(^^)