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

条件に一致する行を検索
ExcelVBAにはクエリとかSQLを使える機能もあるけど、それはそれで考えるの大変ということで。
No | 名前 | 趣味 |
1 | HANAKO | BASKETBALL |
2 | JIRO | SOCCER |
3 | TARO | BASKETBALL |
4 | SABURO | SOCCER |
5 | SHIRO | SOCCER |
6 | GORO | BASKETBALL |
7 | YOSHIE | BASKETBALL |
8 | AKEMI | SOCCER |
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
膨大なリストで色んな文字列や条件の組み合わせがある場合は、当然もっと複雑になってきます。
単純なプログラムの組み合わせで複雑な処理を実装できる感じが分かるようになると、プログラムって簡単と思えるようになるような気がしました。
今後の参考にさせていただきます。
ディスカッション
コメント一覧
まだ、コメントがありません