Excel

 【Excel】VBAマクロで文字列比較(部分一致:2列:別シートなど)する方法【Find、Range、Cells関数】

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

この記事では、VBAマクロで文字列比較(部分一致:2列:別シートなど)する方法

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

変数名は、完全な初心者でもわかりやすいように、独特の日本語ローマ字表記を使用しています。このため、実際の使用時には適切な英語表記に変更してご利用ください。

それでは、具体的な方法を見ていきましょう!

 

VBAマクロで文字列比較を部分一致(同じシートのB列とC列の2行目から最終行まで比較し、結果をD列に出力)でチェックする方法

それではまず、同じシート内でのB列とC列の文字列比較について解説していきます。

この方法では、B列とC列の各行を比較し、部分一致する場合にD列に結果を出力します。

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


Sub StringCompareSameSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Dim saigoNoGyoretu As Long
    saigoNoGyoretu = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    Dim i As Long
    For i = 2 To saigoNoGyoretu
        If InStr(ws.Cells(i, 2).Value, ws.Cells(i, 3).Value) > 0 Then
            ws.Cells(i, 4).Value = "一致"
        Else
            ws.Cells(i, 4).Value = "不一致"
        End If
    Next i
End Sub

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

このコードでは、`InStr`関数を使用してB列とC列の文字列が部分的に一致しているかどうかを確認し、結果をD列に出力しています。

`For`ループを使って、2行目から最終行まで各行を順にチェックしています。

 

VBAマクロで文字列比較を部分一致(別シートのB列の2行目から最終行まで比較し、結果をC列に出力)でチェックする方法

続いては、別シートでの文字列比較について解説していきます。この方法では、一つのシートのB列と別のシートのB列を比較し、一致した場合には元のシートのC列に結果を出力します。

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


Sub StringCompareDifferentSheets()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")
    Dim saigoNoGyoretu As Long
    saigoNoGyoretu = ws1.Cells(ws1.Rows.Count, "B").End(xlUp).Row

    Dim i As Long
    For i = 2 To saigoNoGyoretu
        If Not ws2.Range("B:B").Find(ws1.Cells(i, 2).Value) Is Nothing Then
            ws1.Cells(i, 3).Value = "一致"
        Else
            ws1.Cells(i, 3).Value = "不一致"
        End If
    Next i
End Sub

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

このコードでは、`Find`関数を使用して、別のシートのB列に指定した文字列が存在するかどうかを確認しています。この方法は、複数のシート間でデータを比較する際に非常に便利です。

 

まとめ