Excelで一行おきや特定の行数ごとに自動で行を挿入する方法【詳細解説】ショートカットで時短する方法
Excelで一行おきに新しい行を挿入する操作は、大量のデータを扱う場合には非常に手間がかかります。しかし、この操作を効率的に行う方法として、手動操作と超簡単なVBA(マクロ)を使った自動化があります。本記事では、それぞれの手法を詳細に解説します。
Excelのショートカットを利用して手動で一行おきに行を挿入する方法
少量のデータに対しては、以下の手順で対応可能です。

- 範囲を選択
- 挿入したい範囲をすべて選択します(例: A1:A10)。
 
 - 行を挿入
- Ctrl + Shift + “+” を使うと選択範囲の下に新しい行を一括で挿入できます。
 - ただし、この方法はデータが少ない場合にのみ適しています。
 - ですが、選択した行数が2行だと、追加で2行下に挿入するされてしまうので、1行おきや特定の行数おきに、特定の行数を挿入するには超簡単にできるVBA(マクロ)を利用をおすすめします。
 
 
大量データに対応するVBA(マクロ)を使った自動化
マクロは難しいイメージありますが、超簡単です。この手順のコードを張り付けて実行するだけで簡単に、一行ごとや任意の行ごとに行を挿入できます。大量のデータに一行おきで行を挿入する場合、VBAを使うと効率的に作業が進みます。
手順1: VBAエディタを開く
- Excelで Alt + F11 を押し、VBAエディタを開きます。
 - 上部メニューから 挿入 → 標準モジュール を選択します。
 - 新しく作成されたモジュールに以下のコードを貼り付けます。
 

VBAコード:一行おきに行を挿入する
以下のコードをコピーしてVBAエディタに貼り付けてください。

Sub InsertRowEveryOther()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    ' 操作するシートを指定(アクティブシートを使用)
    Set ws = ActiveSheet
    ' 最終行を取得(データがある範囲の最後の行)
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ' 下から上にループして1行おきに行を挿入
    For i = lastRow To 1 Step -1
        ws.Rows(i + 1).Insert
    Next i
    ' 処理完了の通知
    MsgBox "一行おきに行を挿入しました!"
End Sub
手順2: マクロを実行する
- VBAエディタを閉じて、Excelのシートに戻ります。
 - Alt + F8 を押し、「マクロ」ダイアログを開きます。
 - 実行するマクロとして「InsertRowEveryOther」を選択し、「実行」をクリックします。
 

これにより、シート内のすべてのデータの間に新しい行が挿入されます。

動作の詳細解説
- 最終行の取得(
lastRow)
このコードでは、Cells(ws.Rows.Count, 1).End(xlUp).Rowを使用して、1列目(A列)の最終行番号を取得しています。これにより、データがどれだけあっても対応可能です。 - 逆順でのループ処理
行の挿入はセルの位置をずらすため、ループ処理は必ず**下から上(Step -1)**に進める必要があります。これにより、処理中にデータがずれる問題を防ぎます。 - 行の挿入(
ws.Rows(i + 1).Insert)
現在の行の次に新しい行を挿入する命令です。 
応用編:挿入した行にデータを追加
挿入した行に自動で特定のデータを入力する場合、以下のようにコードを変更します。
Sub InsertRowWithData()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For i = lastRow To 1 Step -1
        ws.Rows(i + 1).Insert
        ws.Cells(i + 1, 1).Value = "新しい行"
    Next i
    MsgBox "一行おきに行を挿入し、データを追加しました!"
End Sub
このコードでは、新しく挿入された行の1列目に「新しい行」というデータを入力します。
実用例
- データの視覚的な整理: データの間に空行を挿入して見やすくする。
 - テンプレートの作成: 新しい行に「未記入」や「確認済み」といったデータを自動挿入。
 - 大量データの加工: データ量が数千行の場合でも数秒で処理可能。
 
注意点
- データのバックアップ
作業前にシートのバックアップをとっておきましょう。マクロは一度実行すると元に戻せない場合があります。 - 範囲の指定
必要に応じて特定範囲のみに処理を限定することを検討してください。 
これで、一行おきに行を挿入する操作を効率的に行う方法が理解できたと思います。ぜひ作業に活用してみてください!
任意の行数ごとに任意の行数を挿入する方法は?
任意の行数ごとに任意の行数を挿入するには、以下のようなVBAコードを使用します。このコードでは、挿入する間隔と行数をユーザーが指定できるように設計されています。
任意の行数ごとに任意の行数を挿入するVBAコード
手順1: VBAエディタを開く
- Alt + F11 を押してVBAエディタを開きます。
 - 上部メニューから「挿入」→「標準モジュール」を選択します。
 
手順2: 以下のコードを貼り付け

Sub InsertRowsAtIntervals()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim intervalRows As Long
    Dim insertRows As Long
    ' 操作するシートを指定(アクティブシートを使用)
    Set ws = ActiveSheet
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ' ユーザーに挿入間隔と挿入する行数を入力させる
    On Error Resume Next
    intervalRows = Application.InputBox("何行ごとに挿入しますか?(例: 5)", Type:=1)
    insertRows = Application.InputBox("何行挿入しますか?(例: 2)", Type:=1)
    On Error GoTo 0
    ' 無効な値の場合は終了
    If intervalRows <= 0 Or insertRows <= 0 Then Exit Sub
    ' 下から上にループして指定間隔ごとに行を挿入
    For i = lastRow To 1 Step -1
        If (lastRow - i + 1) Mod intervalRows = 0 Then
            ws.Rows(i + 1).Resize(insertRows).Insert
        End If
    Next i
    MsgBox intervalRows & " 行ごとに " & insertRows & " 行を挿入しました!"
End Sub
手順3: マクロを実行
- VBAエディタを閉じて、Excelシートに戻ります。
 - Alt + F8 を押して「InsertRowsAtIntervals」を選択し、「実行」をクリックします。
 - 2つのダイアログが順番に表示されるので、以下を入力します。
- 何行ごとに挿入するか(例: 
5) - 何行挿入するか(例: 
2) 
 - 何行ごとに挿入するか(例: 
 



これにより、指定した間隔ごとに指定した行数が挿入されます。
コードの仕組み
intervalRowsとinsertRows- ユーザーが指定した「挿入間隔」と「挿入する行数」を取得します。
 Application.InputBoxを使用してユーザー入力を受け取ります。
- 条件付きループ
(lastRow - i + 1) Mod intervalRows = 0を使用して、挿入間隔の条件を満たす行に対してのみ行を挿入します。- 下から上に進む(
Step -1)ことで、行の挿入による位置ずれを防ぎます。 
 - 複数行の挿入
Resize(insertRows)で挿入する行数を指定します。
 
応用: 挿入した行にデータを追加する
挿入した行に自動的にデータを入力するには、以下のようにコードを変更します。
Sub InsertRowsWithDataAtIntervals()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim intervalRows As Long
    Dim insertRows As Long
    Dim j As Long
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    intervalRows = Application.InputBox("何行ごとに挿入しますか?(例: 5)", Type:=1)
    insertRows = Application.InputBox("何行挿入しますか?(例: 2)", Type:=1)
    If intervalRows <= 0 Or insertRows <= 0 Then Exit Sub
    For i = lastRow To 1 Step -1
        If (lastRow - i + 1) Mod intervalRows = 0 Then
            ws.Rows(i + 1).Resize(insertRows).Insert
            ' 挿入した行にデータを入力
            For j = 1 To insertRows
                ws.Cells(i + j, 1).Value = "追加データ " & j
            Next j
        End If
    Next i
    MsgBox intervalRows & " 行ごとに " & insertRows & " 行を挿入し、データを入力しました!"
End Sub
実用例
- データの視覚的整理
指定の間隔で空行を挿入して、データを見やすくする。 - 区切り線やラベルの挿入
挿入した行に「区切り」や「ラベル」を記入して、レポートや一覧を整理。 - テンプレート作成
特定の間隔で入力欄を追加して、繰り返し使えるテンプレートを作成。 
注意事項
- バックアップを忘れずに
- マクロを実行する前に、必ずシートのバックアップを作成してください。
 
 - 大きなデータセットの場合
- データ量が多い場合、処理に時間がかかることがあります。範囲を指定して実行することを検討してください。
 
 
これらのコードを使うと、一行おきや柔軟に任意の行数ごとに任意の行数を挿入でき、データの整理や加工が効率的に進みます。ぜひ試してみてください!
  
  
  
  

コメント