- ベストアンサー
エクセルでマクロを作成し、行を挿入して連番を振る方法を教えてください
- エクセルのマクロを使い、行を挿入して連番を振る方法を教えてください。
- 毎日手作業で行を挿入しコピーし連番を振っている作業を効率化したいです。
- C列の値に応じて、挿入する行数や連番の振り方を判断するマクロを作りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは Sub test() Dim c As Long Dim i As Long c = Range("A" & Rows.Count).End(xlUp).Row Application.ScreenUpdating = False For i = c To 2 Step -1 If Cells(i, 3) > 1 Then Rows(i + 1).Resize(Cells(i, 3) - 1).Insert Cells(i + 1, 1).Resize(Cells(i, 3) - 1) = Cells(i, 1) Cells(i + 1, 3).Resize(Cells(i, 3) - 1) = Cells(i, 3) Cells(i, 2) = 1 Cells(i, 2).AutoFill Cells(i, 2).Resize(Cells(i, 3)), xlFillSeries End If Next Application.ScreenUpdating = True End Sub で。
その他の回答 (1)
- Prome_Lin
- ベストアンサー率42% (201/470)
申し訳ございません。 私には、行挿入が難しかったので、変なプログラムになってしまいましたが、お望みの結果は、ちゃんと出ています。 「行挿入」と考えずに、「書類」(A列)と「枚数」(C列)をすべて、配列変数に放り込んで、「枚数」分、繰り返す、という処理です。 従って、元のエクセルの表に上書きをしているだけですが、走らせて、確実に結果は得られています。 Option Explicit Sub Test() Dim a() As String Dim c() As Integer Dim b, d, e, i, j As Integer b = -1 For i = 2 To Range("A1").End(xlDown).Row b = b + 1 ReDim Preserve a(b) ReDim Preserve c(b) a(b) = Cells(i, 1).Value c(b) = Cells(i, 3).Value Next i d = 1 For i = 0 To b e = 0 For j = 1 To c(i) d = d + 1 Cells(d, 1).Value = a(i) e = e + 1 Cells(d, 2).Value = e Cells(d, 3).Value = c(i) Next j Next i End Sub
お礼
回答ありがとうございました。 なるほどなるほど。 同じ結果を得るためのマクロもいろいろあるのですね。 とても参考になりました。 今作っている表の他の作業のところでとても参考になりました。 回答をいただいたお二人のお蔭でいままで何時間もかけていたものが 劇的に早くなりました。
お礼
素早い回答ほんとうにありがとございました。 思ってたとおりの結果でとても助かりました。 教えていただいたマクロを自分の表に合わせて加工していて またわからないところがあったらもう一度教えていただこうかと 思っていたらお礼が遅くなってしまいました。 なんとか自力で加工できとても作業時間の短縮になりそうです。 ほんとうにありがとうございました。