Article

エクセルで10行おきにセルを選択する3つの方法|Ctrl+クリック・名前ボックス・VBAマクロ

この記事で分かること

Excelで10行おきやn行おきにセルを選択する3つの方法を解説。Ctrl+クリック、名前ボックスへのアドレス列挙、VBAのApplication.Unionマクロの使い分けと、選択後の塗りつぶし・行削除まで実機画面付きで紹介します。

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 行おきにデータを抽出する計算式」が便利です。この記事では、選択後に塗りつぶし・コピー・行削除などの操作を一括でかけたい 読者を対象にしています。

サンプルの売上日報。100行のデータを題材に10行おきの選択を試す
この記事で使うサンプル表。1 月 1 日〜4 月 10 日の売上日報 100 行を題材にします。

方法1: Ctrl+クリックで 1 つずつ追加する(〜10 件)

最もシンプルなのは、最初のセルをクリックしたあと Ctrl キーを押しながら 2 つ目以降のセルをクリック していく方法です。準備がいらず、すぐに始められます。

  1. 最初のセル(例: B11)をクリック
  2. Ctrl キーを押しっぱなし にしたまま、B21、B31、B41、… と順にクリック
  3. ステータスバーの「データの個数」を見ながら、必要な件数が選ばれたところで Ctrl を離す

数が少ない場合はこれが最も速いのですが、20 件を超えるとクリック疲れ が出て押し間違えも増えます。その場合は次の方法 2・3 に移りましょう。

方法2: 名前ボックスにアドレスを列挙して選択する(中規模向け)

Excel の左上、列ラベル A のさらに左にある 「名前ボックス」 にセルのアドレスを カンマ区切りで列挙 して Enter を押すと、その複数セルが一度にまとめて選択されます。

B11,B21,B31,B41,B51,B61,B71,B81,B91,B101

例えば上のようにカンマで区切って名前ボックスに入力し、Enter を押すだけで 10 行おきに 10 個のセルが選択 できます。

名前ボックスに10個のセルアドレスをカンマ区切りで入力した状態
左上の名前ボックスにアドレス列挙を入力した状態。この状態で Enter を押します。

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

名前ボックスに入力したアドレスで10セルが選択された結果
10 行おき 10 セルが選択された状態。ステータスバーに「データの個数: 10」と出ています。

名前ボックスには「文字列長」で決まる上限がある(重要)

この方法は気軽ですが、アドレス列挙の文字列が長くなると、ある境界で入力が受け付けられなくなる という罠があります。Excel 2024 の実機(Build 19822)で境界を絞り込んだ結果がこちらです。

件数アドレス例文字列長結果
10 件B11,B21,…,B10140 文字✅ ぴったり 10 セル選択
30 件B11,B21,…,B301140 文字✅ 30 セル選択
38 件B11,B21,…,B381180 文字✅ 38 セル選択(境界上限)
39 件B11,B21,…,B391185 文字❌ 入力が受け付けられず、選択が前の状態のまま残る

ポイントは、選べるかどうかは「件数」そのものより「入力する文字列全体の長さ」で決まる ことです。今回の環境では 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

マクロの実行手順

  1. 対象のブックを Excel マクロ有効ブック (.xlsm) として保存しておく
  2. Alt+F11 で Visual Basic Editor(VBE)を開く
  3. メニュー 挿入 → 標準モジュール
  4. 上のコードを貼り付け
  5. コード内にカーソルを置いて F5 で実行
  6. Excel 画面に戻ると、B 列の 11 行目から 101 行目まで 10 行おきに選択されています
VBE画面にSelectEveryNRowsマクロのコードを貼り付けた状態
VBE の標準モジュールに貼り付けた 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 行おきに視覚的な「区切り線」を入れることができます。

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 行おきで「抽出」したいときは 計算式での抽出記事

Next Read

このあと読む記事

今の内容に近い記事から、次の1本と補助記事を続けて見つけられるようにしています。

Keep Exploring

このテーマをさらに探す

同じテーマの入口記事と更新記事を、一覧の形でまとめています。