この記事は最終更新日から2年以上経過しており、内容が古くなっている可能性があります。
ご理解の上、記事を閲覧いただければと思います。

エクセルで、選択した範囲内の行を「1行おきに削除したい」場合、以下の内容をマクロに貼り付け、実行します。

Sub DeleteAlternateRows()
Dim lngLop As Long
Dim intLftCol As Integer
Dim intRgtCol As Integer

intLftCol = Selection(1).Column
intRgtCol = Selection(Selection.Count).Column

Application.ScreenUpdating = False

For lngLop = Selection(Selection.Count).Row To Selection(1).Row Step -2
Range(Cells(lngLop, intLftCol), Cells(lngLop, intRgtCol)).Delete (xlShiftUp)
Next lngLop

Application.ScreenUpdating = True

End Sub

マクロ作成の詳しい手順

※画面は、Microsfot Office365のものですが、Excel2010、2013でも同様だと思われます。

  1. メニュー[表示]→[マクロ]→[マクロの表示]を選択します。
    マクロの表示
  2. マクロを作成します。ここでは「行を一行ごとに削除する」という名称で作成しています。
    マクロ作成
  3. 「Microsoft Visual Basic for Applications」というソフトに切り替わります。
    何事かと一瞬とまどいますが、「マクロ」の正体みたいなものですので、このまま操作を続けます。
    VisualBasic
  4. ここに、先ほどのコードを貼り付けします。
    マクロを貼付
  5. いったん別ウィンドウのエクセルに戻ります。
    ウィンドウ切り替えてエクセルへ
  6. 「一行ごとに削除したい範囲」を選択し、再び、メニュー[表示]→[マクロ]→[マクロの表示]を選択すると、先ほど作成したマクロが表示されていますので、実行します。
    マクロを実行
  7. 実行すると、選択範囲内の不要な偶数行が削除されました。
    偶数行が消える

ちなみに、マクロ付きのエクセルファイルは、拡張子「.xlsx」で保存できないので、EXcelマクロ有効ブック「.xlsm」で保存します。

マクロ有効ブックで保存の注意

マクロ有効ブック(xlsm)

仕事でダウンロードしたとあるcsvデータが、1行おきに不要なデータが入っていたので、作成して使っていました。
同じような悩みを持っている方のお役に立てば幸いです。

※マクロは一度実行すると、「元に戻す」ことができないので、必ずマクロ実行前には、ファイルを保存するなどしてバックアップをとっておきましょう!