VBAでのReplace関数の使い方について

スポンサーリンク

内容を置き換えるPeplace関数

あるセルと他のセルの内容を比較しようとしたときに、セルの内容が微妙に違うせいで比較できないことがあります。

私はこの前、二つの表に書いてある店舗一覧を住所の情報を用いてVlookup関数で一つの表になるように加工していたのですが、住所の書き方が微妙に違っていて、情報を抜き出すのに苦労しました。

住所のハイフンが色々使われていて、データが一致している情報が探せなかったのが原因です。
同じ住所でもデータを作成した人によって色々な書き方があります。

  • 「○○市××8-1-1」
  • 「○○市××8 – 1 – 1」
  • 「○○市××8―1―1」
  • 「○○市××8-1-1」
  • 「○○市××8ー1ー1」
  • 「○○市××8丁目1番地1」
  • 空白が入っていたり、半角だったり、全角だったり、ひかれているハイフンがハイフンでなく横線だったりすると、それだけでVlookupでは探せなくなります。またハイフンではなく、「丁目」「番地」と記載されている場合もあります。

    色々な形式で記載されている住所を、一括である決まった形式に置き換えるときに便利な関数がReplace関数です。

    今回はVBAでのReplace関数の使い方について紹介します。

    VBAでのReplace関数の使い方

    VBAでのReplace関数の基本的な使い方は以下のようになります。

    Replace(元の文字列, 検索する文字列, 置き換える文字列)

    例としてA1セルの文字列のうち”―”を”-“に変更するには以下のように記載します。

    Cells(1, 1) = Replace(Cells(1, 1), “―”, “-“)

    スポンサーリンク

    私が作成したVBAコード

    Replace関数をもとにして私が住所一覧表を修正するのに作ったVBAコードは以下のようになります。

    Sub 住所修正()
    Dim i As Long
    i = 2
    Do Until Cells(i, 1) = “”
    Cells(i, 1) = Replace(Cells(i, 1), “―”, “-“) ’全角「―」を半角「-」に変換する
    Cells(i, 1) = Replace(Cells(i, 1), “-”, “-“) ’全角のマイナス「-」を「-」に変換する
    Cells(i, 1) = Replace(Cells(i, 1), “ー”, “-“) ’「ー」を「-」に変換する
    Cells(i, 1) = Replace(Cells(i, 1), “丁目”, “-“) ’「丁目」を「-」に変換する
    Cells(i, 1) = Replace(Cells(i, 1), “番地”, “-“) ’「番地」を「-」に変換する
    Cells(i, 1) = Replace(Cells(i, 1), ” “, “”) ’半角の空白を削除する
    Cells(i, 1) = Replace(Cells(i, 1), “ ”, “”) ’全角の空白を削除する
    i = i + 1
    Loop
    End Sub

    これで同じ書式で表されるようになり住所の突合せでの確認ができるようになりました。
    他に数字やアルファベットの半角、全角を変更する関数が必要な場合もあります。

    Excelのワークシート上で使用するREPLACE関数とは異なる

    Excelのワークシート上で使用するワークシート関数でもREPLACE関数はありますが、VBAで使用するReplace関数とは引数の設定が異なります。
    Excelのワークシート関数の中のREPLACE関数は以下のように引数を設定します。

    REPLACE(文字列, 開始位置, 文字数, 置換文字列)

    VBAの関数とは異なり、開始位置と文字数を設定して置換する方法になります。よって今回のような文字数がばらばらの住所一覧からハイフンの形をそろえたりはできず、少し使い勝手が悪い気がします。

    おすすめ書籍 (広告)

    コメント