トップ > 汎用コード > 特定データが含まれる行(列)を一括削除

特定データが含まれる行(列)を一括削除

シート内から特定のデータを検索し、該当セルに色を付けた後、そのセルの行あるいは列を選択するマクロです。
下図はマクロ実行例です。
「りんご」と「リンゴ」をアクティブシートから検索し、一致セルに色がつき、そのセルが含まれる行が選択されます。



特定のデータが含まれる行(列)がまとめて選択されるので、手動で行(列)の削除を行えます。
マクロで行(列)を削除することも可能ですが、マクロ実行後に「元に戻す」機能が使えないため、削除は手動で行うことをお薦めします

コードの貼り付け場所

サンプルコード

Sub FIND_AND_RCselect() '対象:アクティブシート
    Dim varArray As Variant, v As Variant
    Dim strAddress As String
    Dim rngFnd As Range, rngUni As Range
    
    varArray = Array("りんご", "リンゴ") '検索文字列
    
    For Each v In varArray
        Set rngFnd = Cells.Find(what:=v, LookAt:=xlPart) '検索 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メソッドは、行が重複して選択された際、適切な形の選択に変更するために用いています。

ページトップへ戻る

Excel 汎用コード

Word 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.