Excel

【Excel】VBAマクロで一致するセルを探す・取得・抽出する方法(同じ値・文字列など)する方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、【Excel】VBAマクロで一致するセルを探す・取得・抽出する方法(同じ値・文字列など)する方法について解説していきます。

ポイントとしては`Find`、`Range`、`Cells`関数を使用することです。

初心者でも理解しやすいように、変数名は少々変わった日本語ローマ字表記を採用しています。

それでは、詳しく見ていきましょう!

 

VBAマクロで一致するセルを探す方法【インプットボックスに値や文字列を入れ、A列で一致するセルがあればB列に一致!!と出力する】

それではまず、インプットボックスを使用して一致するセルを探す方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub Sagasu()
    Dim nyuuryokuchi As String
    nyuuryokuchi = InputBox("検索したい文字列を入力してください")
    Dim sagasuHani As Range
    Set sagasuHani = Sheets("Sheet1").Range("A1:A100")
    Dim ketugouCell As Range

    For Each ketugouCell In sagasuHani
        If ketugouCell.Value = nyuuryokuchi Then
            ketugouCell.Offset(0, 1).Value = "一致!!"
        End If
    Next ketugouCell
End Sub

コードのAlt+F8を押し、マクロ選択画面で`Sagasu`関数を実行します。

このコードでは、ユーザーが入力した文字列とA列のセルを比較し、一致するものがあれば、その隣のB列に「一致!!」と表示されます。

 

VBAマクロで一致するセルを探す方法【シート1のA列2行目から最終列までセルを順番に読み込み、それがシート2にあるかチェックし、あれば色付けする】

続いては、シート間で一致するセルを探し、色付けする方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub IroZuke()
    Dim hikakuCell As Range, sagasuHani As Range
    Set sagasuHani = Sheets("Sheet1").Range("A2:A" & Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row)

    For Each hikakuCell In sagasuHani
        If Not Sheets("Sheet2").Range("A:A").Find(What:=hikakuCell.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
            hikakuCell.Interior.Color = RGB(255, 255, 0) ' 黄色に色付け
        End If
    Next hikakuCell
End Sub

コードのAlt+F8を押し、マクロ選択画面で`IroZuke`関数を実行します。

このコードでは、Sheet1のA列にある各セルがSheet2のA列に存在するかどうかをチェックし、存在すればそのセルを黄色に塗ります。

 

VBAマクロで一致するセルを探す方法【インプットボックスに値や文字列を入れ、A列で一致するセルがあればシート2に行ごと抽出する】

最後に、インプットボックスで入力された値がA列に存在する場合、その行を別のシートに抽出する方法について説明します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub HikouChuushutsu()
    Dim nyuuryokuchi As String
    nyuuryokuchi = InputBox("抽出したい文字列を入力してください")
    Dim hikakuCell As Range, sagasuHani As Range
    Set sagasuHani = Sheets("Sheet1").Range("A1:A100")
    Dim gyoushu As Long
    gyoushu = 1

    For Each hikakuCell In sagasuHani
        If hikakuCell.Value = nyuuryokuchi Then
            Rows(hikakuCell.Row).Copy Destination:=Sheets("Sheet2").Rows(gyoushu)
            gyoushu = gyoushu + 1
        End If
    Next hikakuCell
End Sub

コードのAlt+F8を押し、マクロ選択画面で`HikouChuushutsu`関数を実行します。

このコードでは、指定された文字列がSheet1のA列に存在する場合、その行全体をSheet2にコピーします。