2010/11/17

【Excel】特定の文字列を含む行を削除

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

ただ、このケースはマクロを組む必要はありません。

もっと楽な方法があるので、ご紹介します。


もちろん、依頼者にもこれから示す方法を教えてあげました。




以下のような表があるとします。


この表につき、『色列が、赤である行を削除する』とします。


図1


この場合、オートフィルタを使うと、『特定の文字列を含む行を削除』ことが簡単に実現できます。


まず、先頭行(タイトル行)にオートフィルタを設定し、色列を赤で絞り込みます。



図2


次に、絞り込まれた行を選択し、行の削除をします。


図3


最後にオートフィルタを解除すると、完了です。


『特定の文字列を含む行を削除』できました!


図4




オートフィルタを使いこなすと、『特定の行』に対して何かすることが非常に楽になります。

今回の例では、完全一致である行を操作していますが、オートフィルタの絞込み条件には、前方一致や後方一致、数値の比較などさまざまな条件を指定できます。


この様に マクロを使わずとも、EXCELの機能を使ってルーチンワークをすることは可能なのです。


VBAだけでなくEXCELの機能についてもいろいろ知る必要がありそうですね。



このエントリーをはてなブックマークに追加