Categories: ツール・アプリ

エクセルで1行おきに行を削除するマクロの書き方と実行方法

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

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

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

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

麻川 圭

企画から制作まで、器用貧乏タイプのWebディレクターです。 努力の大切さを痛感しつつもドッグイヤーな業界に精一杯の日々( ˘ω˘ ;)。

View Comments

    • > Alsaさん
      たしかに!
      記事内の文言が間違っていましたね・・!
      教えて頂きありがとうございます・・・修正していきます。

Share
Published by
麻川 圭