Replace関数は文字列を置換・削除する利用度の高い関数

vbareplaceeyecatch

エクセルVBAで文字列操作関数にReplace関数があります。
Replace関数は検索の文字列を指定の文字列に置換したり、削除したり出来ます。
利用価値の高い関数です。使い慣れておきましょう。

こんにちは、じゅんぱ店長(@junpa33)です。

今回のテーマは、文字列を別の文字列に変換するReplace関数についてです。

エクセルシートで、価格欄に「〇〇円」と入力してしまっている。

「こんなのSUM(合計)も使えないでしょ!どうしてくれる!?」

「セル一個づつ「円だけ」をDELするの。最悪!」

エクセルVBAを少しでもかじったことがある人なら、「そんなバカ」な解決法はしないでしょう。

ある意味、Replace関数は、「そんなバカ」なことを救ってくれる関数です。

「関数リファレンス」を調べる

Replace関数で文字列を置換・削除。
どういう関数、どのように使う?

例えば、「ワークシート上の一部のセルの値の文字列の一部の文字だけを変更したい!」とか、

また他にも、「郵便番号の3桁目の次の「-」を取り除きたい」とか、

「セル内の文字列が改行されていて3行になってしまった。戻したい!」とか、・・・

という様な、そんな場合に効く関数です。

Replace関数

つまり、文字列の全体や一部分を別の文字列に変換する。さらに、不要な文字列を削除することが出来る関数です。

Replace関数の構文

Replace関数の構文

  • Replace ( 文字列 , 置換される文字列 , 置換する文字列  [, 開始位置, [置換回数, [比較のモード]]])

[ ]内は省略可能

 

文字列 置換対象が含まれる文字列
置換される文字列 検索置換したい文字(列)
置換する文字列 置換する文字(列)
開始位置(置換回数と同時指定) 省略可 (文字列の)検索の開始位置
置換回数(開始位置と同時指定) 省略可 置換する文字列の数を指定。省略の場合、すべて置換
比較のモード 省略可 バイナリモードで比較。大小文字区別 値「0」
テキストモードで比較。大小文字区別しない 値「1」

Replace関数の使用例

Replace関数の使い方について幾つかの例示をしてみます。

不要文字を削除する方法

Replaceサンプル1

価格表示(末尾に「円」付き)を修正して(セルの文字列表示を変更して)、

セル間の四則計算(数値表示に変更)が出来るようにします。

コード

Sub Replaceサンプル1()
    Dim i As Long
        For i = 2 To 6
            With Range("C" & i)
        'Replace関数で各セルの「円」を削除する
                .Value = Replace(Range("B" & i), "円", "")
        '表示形式を変更「通貨」表示に変更する
                .NumberFormatLocal = "\#,##0;\-#,##0"
            End With
        Next i
End Sub

デフォルト設定

vbareplace001a

VBAコード実行後の結果

vbareplace002a

  • Replace(Range(“B” & i), “円”, “”)
    置換前の文字を「円」にして、置換後の文字を空文字「””」にします。
    これにより「ただ円を削除するだけ」の結果となります。
  • NumberFormatLocal = “\#,##0;\-#,##0”
    セルの値の表示方法を「通貨」表示に指定します。
    これにより四則計算が出来るようになります。

文字列を置換、修正する方法

人事系 部署変更などのリスト修正などにも利用できます。

Replaceサンプル2

メールアドレスの変更でリスト一覧を修正したい時の例題です。

今回は、特定の人のドメイン部分だけを修正します。

設定する変数
ここで使用する変数は、
  • MyRange ・・・・ 「氏名」欄のセル
  • ASS ・・・・ 「変更する氏名を特定するキー文字」

コード

Sub Replaceサンプル2()
    Dim MyRange As Range
    Dim ASS As String
        '条件指定文字を変数に代入する
        ASS = "田"
        For Each MyRange In Range("B2:B6")
            If InStr(MyRange, ASS) <> 0 Then
        '条件に合致する名前のドメインを置換する
                MyRange.Offset(, 2) = _
                    Replace(MyRange.Offset(, 1), "ABCD.com", "XYZ.co.jp")
            Else
        '条件に合致しない場合はスルーする
                MyRange.Offset(, 2) = MyRange.Offset(, 1)
            End If
        Next
End Sub

最初の設定状態

vbareplace003a

VBAコード実行後の結果

vbareplace004a

赤色のチェックマークのデータが修正されました。

MEMO

他に使用した関数は

instr関数・・・文字列の中から指定した文字(列)を探します。

vbainsteeyecatch Instr関数・InstrRev関数は文字列を検索する。ファイルパス取得に威力

使用したステートメントは

For Each ~ Next・・・回数を指定しないループ処理のステートメント

vbadoloopeyecatch VBA 回数不定のループ処理はDo LoopとFor Each

使用したRangeプロパティは

Offset・・・セル範囲を基準に、相対的に移動して別のセル範囲を選択します。

vbaoffseteyecatch Offsetプロパティは指定範囲を移動させる

セル内の改行コードを削除する方法

Replace関数は、文字列だけでなく、改行コードなどの制御コードも置換することが出来ます。

改行コードの知識

  • MsgBoxやInputBoxなどで使用する改行コードは、char(13) + char(10)つまり「vbCrLf」を使用します。
  • ワークシートのセル中で使用する改行コードは、char(10)つまり「vbLf」を使用します。
  • VBE(ビジュアルベーシックエディタ)内のコード表示としての改行は「半角スペースとアンダースコア」つまり「 _」を使用します。

Raplaceサンプル3

セル内での改行を取り消しますので、その改行コードは「vbLf」となります。

改行コード「vbLf」は文字列ではないので、「”」ダブルクォーテーションは付けないようにします。

コード

Sub Replaceサンプル3()
    Dim TagArea As Range
        For Each TagArea In Range("B2:B6")
        '改行コードを空文字に置換(つまり削除)する
                TagArea.Offset(, 1) = Replace(TagArea, vbLf, "")
        Next
End Sub

最初の設定

vbareplace005a

VBAコード実行の結果

vbareplace006a

オプション設定をまとめて比較

Replace関数には3種のオプション設定があります。

利用頻度は多くないと思いますが、違いをまとめて比較してみます。

Replaceサンプル4

ワークシートを使って違いを一覧表で表示します。

それぞれの設定項目を変数化してコード作成します。

コード

Sub Replaceサンプル4()
    Dim 甲 As String, 乙 As String, 丙 As String
    Dim 丁 As Integer, 戊 As Integer, 己 As Integer
    Dim i As Long
        For i = 3 To 7
            甲 = Range("B" & i)
            乙 = Range("C" & i)
            丙 = Range("D" & i)
            丁 = Range("E" & i)
            戊 = Range("F" & i)
            己 = Range("G" & i)
            Range("H" & i) = Replace(甲, 乙, 丙, 丁, 戊, 己)
        Next i
End Sub

VBAコードの実行結果

置換結果で効果を確認してください。

vbareplace007

Replace関数の使い方のまとめ

Replace関数の使い道は、それぞれに違うかと思います。

業務状況の変化で、入力したデータ、登録したデータをその都度変更しなければいけない。

積み上げてきたデータベースの古い情報を取り出し、修正削除しなければいけない。

など、広い利用用途で使える関数だと思います。

「まとめて置換、まとめて削除」が出来るところが最大の魅力です。

是非、使い慣れしてエクセル仕事にどんどん活用していきましょう。

エクセルVBAの独自学習をより進めるために

Replace関数もその一つですが、

エクセル関数の中には、「便利すぎる関数」が多く埋もれています。

エクセルVBAを使いだしたなら、

是非、その埋もれている関数をどんどん掘り出していくことをお勧めします。

初級者向けに、独自学習でエクセルVBAを知るための取り組み方として、

参考にしていただけるガイダンス記事を書いていますので、また参考にしてみてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。

Udemy1eyecatch エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

エクセルVBA最速理解で必要な知識を集めよう!

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。