Excel VBA – 条件一致する行だけ削除する

2022年5月23日

たくさんデータがあって、毎回同じ条件に合う行を削除するようなとき、フィルタでもできるけどかったるい。

条件に一致する行を検索

ExcelVBAにはクエリとかSQLを使える機能もあるけど、それはそれで考えるの大変ということで。

No名前趣味
1HANAKOBASKETBALL
2JIROSOCCER
3TAROBASKETBALL
4SABUROSOCCER
5SHIROSOCCER
6GOROBASKETBALL
7YOSHIEBASKETBALL
8AKEMISOCCER
Sub Macro()

Dim intRowNmbr      As Integer

    For intRowNmbr = 2 To 9
    
        If Cells(intRowNmbr, 3) = "SOCCER" Then
        
            Rows(intRowNmbr).Delete


            intRowNmbr = intRowNmbr - 1
            
        End If
    
    Next intRowNmbr

End Sub

これで、趣味がサッカーの人がリストから削除されるという、悲しいプログラムができました(涙

inStr関数で部分一致を判定

IF文のところにinStr関数を使うと、文字列の部分一致を判定できます。

趣味に「BALL」という文字列が含まれる行が削除されるので、趣味がバスケの人がいなくなります。

IF inStr(1, Cells(intRowNmbr, 3), "BALL") > 0 Then

膨大なリストで色んな文字列や条件の組み合わせがある場合は、当然もっと複雑になってきます。

単純なプログラムの組み合わせで複雑な処理を実装できる感じが分かるようになると、プログラムって簡単と思えるようになるような気がしました。

VBA

Posted by SNOW