- ベストアンサー
Excel で行を指定回数だけコピーしたい
Excel で行を指定回数だけ、コピーしたいと思います。 A B C D E ssjj kkkk ssss jajj 2 jkjk jjkj jahj kjkj 4 ksks ssss kakk uhuh 0 kaka sakk kjkj iuiiu 1 このような表があった時、E列で繰り返しの回数を指定するとして 次のシートに以下のような表ができれば いいのですが。 A B C D E ssjj kkkk ssss jajj 2 ssjj kkkk ssss jajj 2 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 kaka sakk kjkj iuiiu 1 膨大な数のデータですのでVBAやマクロ が使えるといいのですが。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>VBAやマクロが使えるといいのですが。 VBAでやれば簡単なロジックで出来るが、VBAの経験はあるのかな。 (A)E列に繰り返し数があると仮定している。 (B)2003までなら、データ数は65536行以内と仮定になる。 (E列の繰り返し数の合計が) 標準モジュールに Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") d = sh1.Range("A65536").End(xlUp).Row MsgBox d k = 1 For i = 1 To d For j = 1 To sh1.Cells(i, "E") sh1.Range(sh1.Cells(i, "A"), sh1.Cells(i, "E")).Copy _ sh2.Cells(k, "A") k = k + 1 Next j Next i End Sub ーー 質問例でのテスト Sheet2に ssjj kkkk ssss jajj 2 ssjj kkkk ssss jajj 2 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 jkjk jjkj jahj kjkj 4 kaka sakk kjkj iuiiu 1
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
E列の最終入力行から順に上にコピーしてゆきます。 もとの行より行数が増加するので、シートから溢れる可能性がありますが、そのチェックはしていません。 アクティブなシートに対して処理が行われます。 Sub test() Dim st As Worksheet, rng As Range Dim r As Long, r1 As Long, cnt As Long Set st = ActiveSheet For r = st.Cells(st.Rows.Count, 5).End(xlUp).Row To 1 Step -1 If IsNumeric(st.Cells(r, 5).Value) Then r1 = st.Cells(r, 5).Value Set rng = st.Cells(r, 1).Resize(1, 5) For cnt = 2 To r1 st.Cells(r + 1, 1).EntireRow.Insert rng.Copy Destination:=rng.Offset(1, 0) Next cnt End If Next r End Sub
お礼
ありがとうございました。 問題点として、E列が"0"のところが残ってしまいました (E列"0"のところは行を削除したかったのですが) が、E列 が "0" の行だけ削除するという方法で、無事に、作業を進めることができました。 ちょっと問題点はありましたが、勉強になるcode だと思いました。 これからもよろしくお願いいたします。
お礼
お世話になります。 さきほど、御礼メールを出したつもりなのですが、ポップアップブロッカーの影響なのか、発信していなかったようなので、もう一度、御礼させていただきます。 重複していましたら、お許しください。 教えていただいた方法で無事に問題を解決し、作業を終了することができました。 ほんとうに、ありがとうございました。 VBAはおっしゃられましたように、確かに、経験もほとんどありません。 でも、最近、取り組んでいる仕事で、どうしてもこうした作業が必要になってきましたので、本と首っ引きで取り組んでいます。でも、どうしても、実作業の需要には追いつかないのが現状です。この問題だけで、昨日、半日以上を費やしてしまいました。ほんとうにありがとうございました。