特定データが含まれる行(列)を一括削除2021.04.06 更新:2023.05.20
シート内から特定のデータを検索し、該当セルに色を付けた後、そのセルの行あるいは列を選択するマクロです。
下図はマクロ実行例です。
「りんご」と「リンゴ」をアクティブシートから検索し、一致セルに色がつき、そのセルが含まれる行が選択されます。
特定のデータが含まれる行(列)がまとめて選択されるので、手動で行(列)の削除を行えます。
マクロで行(列)を削除することも可能ですが、マクロ実行後に「元に戻す」機能が使えないため、削除は手動で行うことをお薦めします。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード2021.04.06 更新:2023.05.20
Sub FIND_AND_RCselect() '対象:アクティブシート Dim varArray As Variant Dim v As Variant Dim strAddress As String Dim rngFnd As Range Dim rngUni As Range varArray = Array("りんご", "リンゴ") '検索文字列 For Each v In varArray Set rngFnd = Cells.Find(What:=v, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ MatchByte:=False) '検索 1周目「りんご」2周目「リンゴ」 If Not rngFnd Is Nothing Then ' strAddress = rngFnd.Address '最初に検索一致したセルの番地格納 If rngUni Is Nothing Then Set rngUni = rngFnd Do Set rngUni = Union(rngUni, rngFnd) 'セルを集合 Set rngFnd = Cells.FindNext(rngFnd) '次の一致セルを検索 Loop Until strAddress = rngFnd.Address 'セルのアドレスが一致したらループを抜ける End If Next If Not rngUni Is Nothing Then rngUni.Interior.ColorIndex = 6 If MsgBox("行:「はい」 列:「いいえ」", vbYesNo, "行を選択しますか?") = vbYes Then Union(rngUni.EntireRow, rngUni.EntireRow).Select '行選択 Else Union(rngUni.EntireColumn, rngUni.EntireColumn).Select '列選択 End If End If End Sub
「検索文字列」
検索する文字列です。検索文字列の追加は、次の例を参考にしてください。
例:Array("りんご", "リンゴ") → Array("りんご", "リンゴ", "みかん", "ぶどう")
「LookAt:=xlPart」
検索文字列が、セル内のデータに含まれる場合も一致判定となります。
【例】検索文字列:りんご セル内データ:青りんご → 一致判定
セルと完全一致のみを一致とする場合:xlPart → xlWhole
「Union(rngUni.EntireRow, rngUni.EntireRow).Select」
コード最後の「Select」を「Delete」に変更すると、
検索一致セルを含む行を一括で削除します。
Unionメソッドは、行が重複して選択された際、適切な形の選択に変更するために用いています。