特定の値が含まれている行を削除する方法
Excelのデータを整理するときに、特定の値が含まれている行を削除する場面はないですか?
例えば、
- 売上データのうち、キャンセルされた注文のみ削除したい
- 特定のキーワードを含む行を一括で削除したい
- エラーや空白値を含む行を削除したい
手作業でフィルタをかけて削除することも可能ですが、データが大量にある場合は時間がかかるので、とても面倒な作業です。
VBAを使えば、一瞬で特定の条件に合う行を削除でき、業務効率を大幅に向上させることができます。
VBAで特定の値を含む行の削除
実際にVBAを考えていくと、次の手順で処理を行えるかと思います。
- データ範囲を指定する(行を削除する場合には、最終行を取得するなど)
- 特定の値を検索する(空白の行や、特定の文字など)
- 該当する行を削除する
次のようなコードを使えば、指定した値を含む行を削除できます。
例
Sub list_make()
Dim ls_rw As Long
' 最終行を取得
ls_rw = Cells(Rows.Count, 1).End(xlUp).Row
' 後ろから前に繰り返す(前から削除すると行がずれるため)
For i = ls_rw To 1 Step -1
If Cells(i,1).Value = "キャンセル" Then
ws.Rows(i).Delete
End If
Next i
MsgBox "削除完了しました"
End Sub
コードの内容については、コメントにて書いてある通りですが、次のような内容を実行します。
1.最終行を取得する
2.最終行から上に向かって削除する行かを確認し、「キャンセル」と書いていれば行を削除する
※これは上から行うと、行が削除された際に上に移動するので、移動した分、行がずれてしまうから
3.削除が終われば、「削除完了しました」とメッセージを出す
その他の工夫
それ以外にも、IF構文の内容を変更すれば、2つの内容に基づいて削除することもできます。
If Cells(i, 1).Value = "キャンセル" Or Cells(i, 1).Value = "返品" Then
またA列に限らず、B列やC列に指定をすることもできますし、横方向に確認をしていき、列を削除するという方法も取れます。
まとめ
VBAを使うことで、特定の値を含む行を簡単に削除できます。通常の操作でもオートフィルタなどで絞り込みをして削除をすることもできますが、ボタンひとつで削除できるのは、マクロのいいところです。
- 手作業ではなく、一括でデータを整理できる
- 条件を変更すれば、様々なケースに応用可能
業務の自動化に役立ててみてください!
コメント