Excel で 10 行おきや n 行おきにセルを選択 したいときは、データ量に応じて次の 3 つの方法を使い分けます。選択できれば、そのまま塗りつぶし・太字化・コピー・行削除を一括で実行できます。
- 方法1: Ctrl+クリック — 10 件程度までなら手作業が最速
- 方法2: 名前ボックスにアドレスを列挙 — 入力文字列が 180 文字前後までなら一発で選べる
- 方法3: VBA マクロ(
Application.Union)— 選ぶセルが数十件を超える場合や繰り返し使う場合に最適
この記事では、100 行の売上日報を題材に、3 つの方法それぞれの手順と 実用上限 を Excel 2024 の実機画面で確認しながら整理します。切り替え基準は元データの「総行数」ではなく 実際に選ぶセル数(およびアドレス文字列の長さ) なので、「1000 行の表でも 10 個しか選ばないなら名前ボックスで十分」というケースもあります。
「抽出」ではなく「選択」したい場面
「n 行おき」というキーワードでは、大きく 2 つの目的 があります。
- 抽出: 元データから n 行おきの値を 別のセルに取り出す(FILTER + MOD + SEQUENCE 等の数式)
- 選択: n 行おきのセルを そのまま選択状態にする(本記事のテーマ)
抽出したい場合は別記事「Excel で〇行おき、n 行おきにデータを抽出する計算式」が便利です。この記事では、選択後に塗りつぶし・コピー・行削除などの操作を一括でかけたい 読者を対象にしています。

方法1: Ctrl+クリックで 1 つずつ追加する(〜10 件)
最もシンプルなのは、最初のセルをクリックしたあと Ctrl キーを押しながら 2 つ目以降のセルをクリック していく方法です。準備がいらず、すぐに始められます。
- 最初のセル(例: B11)をクリック
- Ctrl キーを押しっぱなし にしたまま、B21、B31、B41、… と順にクリック
- ステータスバーの「データの個数」を見ながら、必要な件数が選ばれたところで Ctrl を離す
数が少ない場合はこれが最も速いのですが、20 件を超えるとクリック疲れ が出て押し間違えも増えます。その場合は次の方法 2・3 に移りましょう。
方法2: 名前ボックスにアドレスを列挙して選択する(中規模向け)
Excel の左上、列ラベル A のさらに左にある 「名前ボックス」 にセルのアドレスを カンマ区切りで列挙 して Enter を押すと、その複数セルが一度にまとめて選択されます。
B11,B21,B31,B41,B51,B61,B71,B81,B91,B101
例えば上のようにカンマで区切って名前ボックスに入力し、Enter を押すだけで 10 行おきに 10 個のセルが選択 できます。

Enter 押下後、10 セルが同時に選択された状態になります。画面右下のステータスバーに「データの個数: 10」が表示され、10 セルが選ばれていることが確認できます。

名前ボックスには「文字列長」で決まる上限がある(重要)
この方法は気軽ですが、アドレス列挙の文字列が長くなると、ある境界で入力が受け付けられなくなる という罠があります。Excel 2024 の実機(Build 19822)で境界を絞り込んだ結果がこちらです。
| 件数 | アドレス例 | 文字列長 | 結果 |
|---|---|---|---|
| 10 件 | B11,B21,…,B101 | 40 文字 | ✅ ぴったり 10 セル選択 |
| 30 件 | B11,B21,…,B301 | 140 文字 | ✅ 30 セル選択 |
| 38 件 | B11,B21,…,B381 | 180 文字 | ✅ 38 セル選択(境界上限) |
| 39 件 | B11,B21,…,B391 | 185 文字 | ❌ 入力が受け付けられず、選択が前の状態のまま残る |
ポイントは、選べるかどうかは「件数」そのものより「入力する文字列全体の長さ」で決まる ことです。今回の環境では 180 文字までは確実に選択でき、185 文字では入力が受け付けられず失敗 という境界が出ました。アドレスが B11(3 文字)から B381(4 文字)のような短い参照なら 38 件前後まで入りますが、AB1234 のように長い参照を混ぜると、より少ない件数でも上限に当たります。
対策はシンプルで、入力文字列が 180 文字前後を超えそうなら方法 3 の VBA マクロに切り替える だけです。選ぶセル数が 30〜40 件以下の範囲であれば、名前ボックスだけで十分に実用できます。
方法3: VBA マクロで Application.Union を使う(件数を気にしなくてよい)
件数が 40 件前後を超える場合や、同じ選択処理を繰り返し使いたい場合は、VBA マクロで一括選択 するのが最も確実で高速です。Application.Union を使って複数セルを 1 つの範囲オブジェクトにまとめ、最後に Select するのが基本パターンです。
マクロの完成コード
Sub SelectEveryNRows()
Dim ws As Worksheet
Dim rng As Range
Dim i As Long
Const STEP_ROWS As Long = 10
Const FIRST_ROW As Long = 11
Const LAST_ROW As Long = 101
Const TARGET_COL As Long = 2 ' B列
Set ws = ActiveSheet
For i = FIRST_ROW To LAST_ROW Step STEP_ROWS
If rng Is Nothing Then
Set rng = ws.Cells(i, TARGET_COL)
Else
Set rng = Application.Union(rng, ws.Cells(i, TARGET_COL))
End If
Next i
rng.Select
End Subこのマクロは、先頭で定義した 4 つの定数を書き換えるだけ で、いろいろなパターンに対応できます。
| 定数 | 意味 | 書き換え例 |
|---|---|---|
STEP_ROWS | 何行おきに選ぶか | 5 行おきなら 5、3 行おきなら 3 |
FIRST_ROW | 最初に選ぶ行 | 2 行目から始めるなら 2 |
LAST_ROW | 最後に選ぶ行 | データの最終行番号 |
TARGET_COL | 対象の列番号 | C 列なら 3、D 列なら 4 |
マクロの実行手順
- 対象のブックを Excel マクロ有効ブック (.xlsm) として保存しておく
- Alt+F11 で Visual Basic Editor(VBE)を開く
- メニュー 挿入 → 標準モジュール
- 上のコードを貼り付け
- コード内にカーソルを置いて F5 で実行
- Excel 画面に戻ると、B 列の 11 行目から 101 行目まで 10 行おきに選択されています

SelectEveryNRows。F5 で実行します。Application.Union は何度呼び出しても高速で、10 個選択する場合は実機で 数ミリ秒 しかかかりませんでした。100 行・1000 行規模でもパフォーマンスの心配はいりません。
応用: データの最終行を自動で検出する
データの行数が日々変わる場合は、LAST_ROW を固定せず、最終行を自動検出 する書き方に変えると便利です。
Sub SelectEveryNRowsDynamic()
Dim ws As Worksheet
Dim lastRow As Long
Dim rng As Range
Dim i As Long
Const STEP_ROWS As Long = 10
Const START_ROW As Long = 11
Const TARGET_COL As Long = 2 ' B列
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, TARGET_COL).End(xlUp).Row
For i = START_ROW To lastRow Step STEP_ROWS
If rng Is Nothing Then
Set rng = ws.Cells(i, TARGET_COL)
Else
Set rng = Application.Union(rng, ws.Cells(i, TARGET_COL))
End If
Next i
If Not rng Is Nothing Then rng.Select
End Subこの版は、Cells(Rows.Count, 2).End(xlUp).Row で B 列の最終行を動的に取得します。データを追加するだけで、毎回 LAST_ROW を書き換える必要がなくなります。
選択後にできること(塗りつぶし・コピー・行削除)
n 行おきにセルを選んだあとは、通常のセル選択と同じようにあらゆる操作 が一括で適用できます。
- 塗りつぶし・太字化: ホームタブの「塗りつぶしの色」やフォント設定が、選択された全セルに同時に適用されます
- コピー: Ctrl+C で選択セルの値と書式をまとめてコピーでき、別の場所に貼り付けられます
- 値のクリア: Delete キーでセル内の値を一括削除
- 行の削除: 選択状態で 右クリック → 削除 → シートの行全体 を選ぶと、10 行おきに行ごと削除できます
- 書式のコピー/貼り付け: 一度適用した書式をブラシ機能で他範囲に展開
たとえば選択状態で塗りつぶし色と太字を適用すると、10 行おきに視覚的な「区切り線」を入れることができます。

3 つの方法の使い分け早見表
| 方法 | 選ぶセル数の目安 | メリット | 注意点 |
|---|---|---|---|
| Ctrl+クリック | 〜10 件 | 準備不要、すぐ始められる | 数が多いとクリック疲れ |
| 名前ボックス | 入力文字列 180 文字まで(短いアドレスなら 30〜40 件程度) | 速い、マクロ不要 | 文字列長が境界を超えると入力が受け付けられない |
| VBA マクロ | 数十件以上でも安定 | 大規模でも高速、使い回せる | マクロ有効ブック (.xlsm) が必要 |
「抽出」したいときは別記事へ
「n 行おきのデータを 別のセルに取り出したい」場合は、選択ではなく 計算式で抽出 するのが向いています。FILTER 関数・MOD 関数・SEQUENCE 関数を組み合わせる方法を別記事で解説しています。
まとめ
- n 行おきに セルを選択 する方法は 3 つ: Ctrl+クリック・名前ボックス・VBA マクロ
- 少数(〜10 件)なら Ctrl+クリック、中規模なら 名前ボックス が手軽
- 名前ボックスは 入力文字列が 180 文字前後まで は安定(短いアドレスなら 38 件まで実測 OK)。それを超えると入力が受け付けられなくなるので VBA に切り替える
- 件数が多い・繰り返し使うなら VBA の
Application.Unionマクロが最適。定数 4 つを書き換えるだけで色々なパターンに対応 - 選択後は、塗りつぶし・太字・コピー・行削除など 通常のセル操作がそのまま 使える
- 別のセルに n 行おきで「抽出」したいときは 計算式での抽出記事へ