(プチ効率化)EXCELで複数の検索文字列があるか否かを判定するマクロ関数

EXCELマクロを利用したプチ業務改善をご紹介します。
マクロと関数のことがわかる方が対象になります。

EXCELで、1つのセル内に文字列が含まれているか否かを調べる場合ですが、
=countif(A1,”*業務改善*”)>0
とすることで、「業務改善」がA1セルに含まれているかどうかを判定できます。

「業務改善」と「IT改善」の様に複数の場合はいかがでしょうか?
=(countif(A1,”*業務改善*”)+countif(A1,”*IT改善*”))>0
で実現できますね。

さらに多くの場合
「株式会社」「合同会社」「有限会社」「社団法人」といった場合はいかがでしょうか?
・・・もちろん、上記の様な数式で実現は可能ですが、後で見たときに非常にわかりづらいことになりますね。修正も大変です。

そういった場合、私はマクロでFunction関数を用いて実現します。
後に紹介するマクロを利用すると、以下の様にすることができます。
=RegCheck(A1,”株式会社|合同会社|有限会社|社団法人”)
となります。シンプルですよね! 探したい文字列を’|’でつないだだけです。
是非、試してみてください。
※正規表現をご存じであればもっと複雑なことが出来るようになります。
※以下のプログラムは、動作保証ならびに動作させた場合に発生した問題・課題・損害については、一切の責任は負いません。自己判断でご利用ください。

EXCELは、本当に多機能です。機能を使うことで、業務改善ができます。
小さな改善で、活き活きとした職場を作りましょう!

本記事にたいする質問やお問合せ・IT改善のご相談はこちら

以下、Function関数をVisual Basicを紹介させていただきます。
マクロを動作させるためには、参照設定ダイアログで「Microsoft VBScriot Regular Expresstions 5.5」を選択が必要になります。

'参照設定ダイアログで「Microsoft VBScriot Regular Expresstions 5.5」を選択

'
' 指定した文字列で合致した文字列があるか否かを判断する
' 使い方
' ReqCheck(セル,正規表現パターン)
' TRUE: 正規表現でヒットする文字がある
' FALSE: ヒットする文字がない
'
Function RegCheck(ByVal strData As String, ByVal strPattern As String) As Boolean
    Dim RE
    Dim rg As Range
    
    Set RE = CreateObject("VBScript.RegExp")
    With RE
        .Pattern = strPattern '検索パターンを設定
        .IgnoreCase = True ' 大文字と小文字を区別しない
        .Global = True ' 文字列全体を検索
        RegCheck = .Test(strData)
    End With
    Set RE = Nothing
    
End Function