ExcelVBA Findメソッドで効率化!実践的な使用例トップ6[図解]

ExcelVBA Findメソッドで効率化!実践的な使用例-アイキャッチ ExcelVBA

Excelマクロでよく使用されるFindメソッドを駆使するための実用的なコード例を紹介します。

ぜひ これらのコードをお試しになって、
日常のタスクを効率化してください!😉

Find関数(特定文字列を検索)


Sub 特定の文字列を検索()

    ' "検索文字列"をA列で最初に見つける
    Dim foundCell As Range
    Set foundCell = Columns("A:A").Find(What:="めろん", LookIn:=xlValues)
    
    ' 見つかった場合、その位置を表示
    If Not foundCell Is Nothing Then
        MsgBox "最初の出現位置: " & foundCell.Address
    Else
        MsgBox "テキストが見つかりませんでした。"
    End If
End Sub

 
シートのA列にテキストがランダムに配置されています。
「めろん」が最初に出現するセルを見つけて、その位置を示します。


 
 

Find関数(大文字と小文字を区別)


Sub 大文字と小文字を区別して検索()

    Dim foundCell As Range
    Set foundCell = Columns("A:A").Find(What:="Apple", LookIn:=xlValues, MatchCase:=True)
    
    ' 見つかった場合、その位置を表示
    If Not foundCell Is Nothing Then
        MsgBox "大文字のAppleが見つかりました: " & foundCell.Address
    Else
        MsgBox "大文字のAppleが見つかりませんでした。"
    End If
End Sub

 
シートのA列にテキストがランダムに配置されています。
「Apple」が最初に出現するセルを見つけて、その位置を示します。

[MatchCase:=True] は、大文字と小文字を区別する検索を行うという意味です。


 
 

Find関数(部分一致検索)


Sub 部分一致検索()

    Dim foundCell As Range
    Set foundCell = Columns("A:A").Find(What:="大福", LookIn:=xlValues, LookAt:=xlPart)
    
    ' 見つかった場合、そのセルを選択
    If Not foundCell Is Nothing Then
        MsgBox "部分一致するテキストが含まれるセル: " & foundCell.Address
        foundCell.Select
    Else
        MsgBox "該当するテキストが見つかりませんでした。"
    End If
End Sub

 
シートのA列にテキストがランダムに配置されています。
「大福」を含むセルを見つけて、その位置を示します。

[LookAt:=xlPart] は、部分一致の検索を行うことを意味しており、
セルの内容に “大福” というテキストを含んでいれば一致とみなされます。


 
 

Find関数(テキストを置き換え)


Sub 置き換え()

    Dim cell As Range
    
    ' B列で「変更対象」というテキストを検索
    Set cell = Columns("B:B").Find(What:="変更対象")
    
    ' もし検索したテキストが見つかったら
    If Not cell Is Nothing Then
        ' 見つかったセルの値を「更新済み」に置き換える
        cell.Value = "更新済み"
    End If
End Sub

 
シートのB列から「変更対象」という文字を見つけて、
「更新済み」に置き換えます。

最初に見つかったものだけを「更新済み」に置き換えます。


 
 

Find関数(複数テキストを置き換え)


Sub 置き換え()
    Dim cell As Range
    Dim firstFoundAddress As String
    
    With Worksheets("Sheet1").Columns("B:B")  ' シート名は適宜変更
        ' B列で「変更対象」というテキストを検索
        Set cell = .Find(What:="変更対象", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)

        ' もし検索したテキストが見つかったら(cellがNothingではない場合)
        If Not cell Is Nothing Then
            firstFoundAddress = cell.Address
            Do
                ' 見つかったセルの値を「更新済み」に置き換える
                cell.Value = "更新済み"

                ' 同じ列で次の「変更対象」を検索
                Set cell = .FindNext(cell)

                ' cellがNothingになったらループを抜ける
                If cell Is Nothing Then
                    Exit Do
                End If

            ' 最初に見つけたセルに戻るか、cellがNothingになるまでループ
            Loop While cell.Address <> firstFoundAddress
        End If
    End With
End Sub

 
特定のシートのB列において「変更対象」という
テキストを含むすべてのセルを検索し、「更新済み」というテキストに置き換えます。


 
 

Find関数(見つかった隣のセルに値入力)


Sub 置き換え()
    Dim cell As Range
    Dim firstAddress As String
    
    'Sheet1のB列で"A組"というテキストを検索し、見つかったらそのセルをcell変数に設定
    With Sheet1.Columns("B:B")
        Set cell = .Find(What:="A組", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        
        'Ifステートメントを使用してcellがNothingではないかチェック
        If Not cell Is Nothing Then
            firstAddress = cell.Address ' 最初に見つけたセルのアドレスを記録します。
            Do
                'セルが見つかった場合、そのセルの右隣(同じ行で1列右)のセルに"隣のセルに入力"というテキストを入力
                cell.Offset(0, 1).Value = "対応済"
                
                '次に該当するセルを検索します。
                Set cell = .FindNext(cell)
            Loop While Not cell Is Nothing And cell.Address <> firstAddress ' 最初に見つけたセルに戻るか、見つからなくなるまでループ
        End If
    End With
End Sub

 
特定のシートのB列において「A組」という文字を検索します。
「A組」を見つけたら、隣のC列に 「対応済」というテキストを入力します。


 
 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】別シート・別ファイルをFind検索する
...

 

「ChatGPT API×Excel VBA 自動化仕事術」
ChatGPTとExcel VBAの強力な組み合わせをマスターし、日々の作業を劇的に効率化!
手間のかかるデータ処理を秒速で完了しちゃいましょう!