Excel ワークシートで他のすべての行を削除する方法

概要

この記事には、Microsoft Excel ワークシートで選択した範囲内の他のすべての行を削除するために使用できるサンプルの Microsoft Visual Basic for Applications マクロが含まれています。

詳細情報

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。 次のマクロを使用するには、次のように Excel ブックを設定します。

  1. 新しい Microsoft Excel ブックを作成します。

  2. 新しいワークシートの範囲 A1:A9 に、次の例のように行をスキップして、1 から 5 の数値を入力します。

    A1: 1
    A2:
    A3: 2
    A4:
    A5: 3
    A6:
    A7: 4
    A8:
    A9: 5
    
  3. [ツール] メニューの [マクロ] をポイントし、[Visual Basic Editor] をクリックします。

    メモMicrosoft Office Excel 2007 以降のバージョンで、[開発] タブの [コード] グループで [Visual Basic] をクリックします。

  4. [挿入] メニューの [モジュール] をクリックします。

  5. 新しいモジュールで、次のマクロを入力します。

Sub Delete_Every_Other_Row()

' Dimension variables.
   Y = False              ' Change this to True if you want to
                          ' delete rows 1, 3, 5, and so on.
   I = 1
   Set xRng = Selection

' Loop once for every row in the selection.
   For xCounter = 1 To xRng.Rows.Count

' If Y is True, then...
       If Y = True Then

' ...delete an entire row of cells.
           xRng.Cells(I).EntireRow.Delete

' Otherwise...
       Else

' ...increment I by one so we can cycle through range.
           I = I + 1

End If

' If Y is True, make it False; if Y is False, make it True.
       Y = Not Y

Next xCounter

End Sub
  1. データを含むワークシートに切り替え、範囲 A1:A9 を選択します。

  2. マクロを実行するには、[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。

    注:

    • Excel 2007 以降のバージョンでは、[開発] タブの [コード] グループで [マクロ] をクリックします。
    • リボンの [開発] タブを表示するには、[Microsoft Office] ボタンをクリックし、[Excel のオプション] をクリックし、[一般的なカテゴリ] をクリックし、[リボン チェック] ボックスの [開発者の表示] タブをクリックして選択し、[OK] をクリックします
  3. Delete_Every_Other_Row マクロを選択し、[実行] をクリックします。

このマクロは、選択範囲の 2 番目の行から始まる、他のすべての行を削除します。

注:

複数の列を含むデータの一覧がある場合は、データの最初の列のみを選択し、マクロを実行します。