| 
    
     |  | こんにちは。かみちゃん です。 
 >延々と処理が終わらなくなりました・・。
 
 ご提示されたサンプルで、まずは試されましたか?
 ただし、No2の値に1が入ると、無限ループ(延々と処理が終わらないこと)になります。
 従いまして、1が入っている場合を考慮すると、以下の★部分を追加してください。
 なお、No2の値が0以下の場合、整数以外の数値、文字列の場合は考慮していません。
 
 Option Explicit
 Sub Macro1()
 Dim RowNo, RowNo2 As Long
 
 '2行目より処理を開始します。
 RowNo = 2
 Do While Cells(RowNo, 1).Value <> ""
 'No2の値が1よりも大きいとき
 If Cells(RowNo, 2).Value > 1 Then '★
 Rows(RowNo).Copy
 Rows(RowNo + 1 & ":" & RowNo + Cells(RowNo, 2) - 1).Insert Shift:=xlDown
 For RowNo2 = 1 To Cells(RowNo, 2)
 Cells(RowNo + RowNo2 - 1, 3) = RowNo2
 Next
 Else '★
 'No2の値が1以下の場合
 'ただし、0はないものとする。
 Cells(RowNo, 3) = 1 '★
 End If '★
 RowNo = RowNo + Cells(RowNo, 2)
 Loop
 Application.CutCopyMode = False
 Range("A1").Select
 End Sub
 
 |  |