プロが教えるわが家の防犯対策術!

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やマクロ
が使えるといいのですが。

よろしくお願いいたします。

A 回答 (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に
ssjjkkkkssssjajj2
ssjjkkkkssssjajj2
jkjkjjkjjahjkjkj4
jkjkjjkjjahjkjkj4
jkjkjjkjjahjkjkj4
jkjkjjkjjahjkjkj4
kakasakkkjkjiuiiu1
    • good
    • 4
この回答へのお礼

お世話になります。
さきほど、御礼メールを出したつもりなのですが、ポップアップブロッカーの影響なのか、発信していなかったようなので、もう一度、御礼させていただきます。
重複していましたら、お許しください。
教えていただいた方法で無事に問題を解決し、作業を終了することができました。
ほんとうに、ありがとうございました。
VBAはおっしゃられましたように、確かに、経験もほとんどありません。
でも、最近、取り組んでいる仕事で、どうしてもこうした作業が必要になってきましたので、本と首っ引きで取り組んでいます。でも、どうしても、実作業の需要には追いつかないのが現状です。この問題だけで、昨日、半日以上を費やしてしまいました。ほんとうにありがとうございました。

お礼日時:2008/09/13 11:51

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
    • good
    • 1
この回答へのお礼

ありがとうございました。

問題点として、E列が"0"のところが残ってしまいました (E列"0"のところは行を削除したかったのですが) が、E列 が "0" の行だけ削除するという方法で、無事に、作業を進めることができました。 ちょっと問題点はありましたが、勉強になるcode だと思いました。 これからもよろしくお願いいたします。

お礼日時:2008/09/13 12:05

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

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


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