【Excel】特定の文字列を含む行を削除
投稿日: 2010/11/17 更新日: 2017/11/12
Excel VBA
先日、『 特定の文字列を含む行を削除するマクロ』を作ってほしいという依頼を受けました。
ぱっと思いつく限りでは、こんな感じのソースが思いついたのですが…。
Sub 特定の文字列を含む行を削除()
Dim c As Range
Dim myRow As Long
With Range("A:A")
Set c = .Find("特定の文字列")
Do While Not c Is Nothing
Rows(c.Row).Delete shift:=xlUp
Set c = .Find("特定の文字列")
Loop
End With
End Sub
ただ、このケースはマクロを組む必要はありません。
もっと楽な方法があるので、ご紹介します。
もちろん、依頼者にもこれから示す方法を教えてあげました。
以下のような表があるとします。
この表につき、『色列が、赤である行を削除する』とします。
この場合、オートフィルタを使うと、『特定の文字列を含む行を削除』ことが簡単に実現できます。
まず、先頭行(タイトル行)にオートフィルタを設定し、色列を赤で絞り込みます。
次に、絞り込まれた行を選択し、行の削除をします。
最後にオートフィルタを解除すると、完了です。
『特定の文字列を含む行を削除』できました!
オートフィルタを使いこなすと、『特定の行』に対して何かすることが非常に楽になります。
今回の例では、完全一致である行を操作していますが、オートフィルタの絞込み条件には、前方一致や後方一致、数値の比較などさまざまな条件を指定できます。
この様に マクロを使わずとも、EXCELの機能を使ってルーチンワークをすることは可能なのです。
VBAだけでなくEXCELの機能についてもいろいろ知る必要がありそうですね。