この記事は最終更新日から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でも同様だと思われます。
- メニュー[表示]→[マクロ]→[マクロの表示]を選択します。
- マクロを作成します。ここでは「行を一行ごとに削除する」という名称で作成しています。
-
「Microsoft Visual Basic for Applications」というソフトに切り替わります。
何事かと一瞬とまどいますが、「マクロ」の正体みたいなものですので、このまま操作を続けます。
-
ここに、先ほどのコードを貼り付けします。
- いったん別ウィンドウのエクセルに戻ります。
-
「一行ごとに削除したい範囲」を選択し、再び、メニュー[表示]→[マクロ]→[マクロの表示]を選択すると、先ほど作成したマクロが表示されていますので、実行します。
-
実行すると、選択範囲内の不要な偶数行が削除されました。
ちなみに、マクロ付きのエクセルファイルは、拡張子「.xlsx」で保存できないので、EXcelマクロ有効ブック「.xlsm」で保存します。
仕事でダウンロードしたとあるcsvデータが、1行おきに不要なデータが入っていたので、作成して使っていました。
同じような悩みを持っている方のお役に立てば幸いです。
※マクロは一度実行すると、「元に戻す」ことができないので、必ずマクロ実行前には、ファイルを保存するなどしてバックアップをとっておきましょう!
これ偶数行が削除されますね。
> Alsaさん
たしかに!
記事内の文言が間違っていましたね・・!
教えて頂きありがとうございます・・・修正していきます。