Excelマクロ・VBA 複数の文字列を置換(SUBSTITUTE関数を複数)する方法

2019年8月14日

文字列をマクロ(VBA)なしで

複数文字列の置換方法を紹介しましたが、

関数が冗長になるため

保守性が良いわけではありません。

VBAを使うことに支障や抵抗がない場合は

ユーザ定義関数を使用すると

効率的に実現することが可能です。

サンプルファイル

使用方法

※セキュリティの警告が出る場合は有効化してください。(解除方法↓)

サンプルファイルの中に保存されている

ユーザ定義関数MultipleSubstituteを利用します。

MultipleSubstitute(Str,RuleList)
<Str>
対象文字列を指定
<RuleList>
検索文字列と置換文字列のセル範囲を指定

RuleListは1列目に検索文字列を指定し、

2列目には置換文字列を指定します。

下のサンプルでは「猫」が「虎」に置換され、

「犬」が「狼」に置換されます。

VBAの実行例

コードサンプル

コードは下記のとおりです。

標準モジュールを追加してペーストすれば

任意のブックで使用可能です。

Option Explicit
Function MultipleSubstitute(str As String, ruleList As Range)
    ' 変換ルールの行数繰り返す 
    Dim rowIndex As Integer ' 変換ルールのループカウンター
    For rowIndex = 1 To ruleList.Rows.Count
        Dim strSrc As String ' 検索文字列
        Dim strTarget As String ' 置換文字列
        strSrc = ruleList.Cells(rowIndex, 1) ' 検索文字列を取得
        strTarget = ruleList.Cells(rowIndex, 2) ' 置換文字列を取得
        str = Replace(str, strSrc, strTarget) ' 文字列置換を実行
    Next
    MultipleSubstitute = str ' 置換結果をセルに表示
End Function

関連記事

マクロ・VBA 最初のプログラム

VBAの基本的な動かし方はこちらを参照

フォローする