Replace関数は、特定の文字列を、別の文字列に置き換えることができる関数です。この記事では、基本的な構文や、具体的な使い方について解説します。
Replace関数とは
Replace関数の活用場面
Replace
関数は、指定した文字列の中から、特定の部分を別の文字列に置き換えるための文字列操作関数です。
たとえば、住所データ中の「-(ハイフン)」を削除したり、全角スペースを半角スペースに統一したいときなど、文字列を整形する場面で非常に役立ちます。
Accessでは、手入力したデータや別部署から入手してインポートしたCSVなどの中に、同じ意味でも表記ゆれが起こることがあります。たとえば「(株)」と「株式会社」、「-」と「ー」などです。このようなデータの“ゆらぎ”を整理するのに、Replace
関数はうってつけです。

Replace関数の仕組み
Replace
関数は、対象文字列を1文字ずつスキャンしながら、指定した検索文字列が現れた箇所を検出して、その部分を置換文字列に入れ替えた新しい文字列を返します。
このとき元の文字列が変更されるわけではなく、「結果として置き換え後の文字列を返す」仕組みになっています。(データを実際に書き換えたい場合は、更新クエリやVBAでデータ更新を行います。)
また、Replace
関数は大小文字の区別や部分的な置換回数の制御にも対応しており、シンプルながら非常に柔軟です。たとえば、「abcABC」という文字列から「abc」だけを置き換えたいのか、大小区別なく全部置き換えたいのかを指定することができます。
構文
Format(文字列,検索文字列,置換文字列,[開始位置],[置換回数],[比較方法])
各引数の内容は次のとおりです。
引数 | 必須/省略 | 内容 |
---|---|---|
文字列 | 必須 | 置換対象となる文字列を指定 |
検索文字列 | 必須 | 検索する文字列を指定 |
置換文字列 | 必須 | 置換する文字列を指定 |
開始位置 | 省略可 | 開始する位置。省略すると先頭から検索する |
置換回数 | 省略可 | 置換する回数。省略するとすべて置き換える |
比較方法 | 省略可 | 文字列の比較方法。設定値は【表1】を参照 |
【表1】比較方法の設定値(省略した場合の既定はvbUseCompareOption
)
定数名 | 内容 |
---|---|
vbUseCompareOption | Option Compareステートメントの設定で比較を行う ※モジュールの宣言セクションで以下ステートメントを宣言 ・Option Compare Binary ・Option Compare Text ・Option Compare Database ※既定でOption Compare Databaseが設定されています。 各内容の挙動は下記を参照↓↓↓ |
vbBinaryCompare | バイナリモードで比較を行う ※大文字/小文字、半角/全角、ひらがな/カタカナが区別される |
vbTextCompare | テキストモードで比較を行う ※大文字/小文字、半角/全角、ひらがな/カタカナが区別されない |
vbDatabaseCompare | データベースの設定に基づき比較を行う ※既定では区別されない設定になっています。 |

つまり、引数「比較方法」を省略した場合は、vbUseCompareOption
が適用→モジュールの宣言セクションにvbDatabaseCompare
が既定で入っているので、”区別されない”っていうことですね!
具体例
最もシンプルな基本形
Replace("Excel VBA", "Excel", "Access")
【結果】
Access VBA
が返されます。
大文字・小文字を区別する置換
Replace("abcABC", "abc", "X", , , vbBinaryCompare)
【結果】
XABC
が返されます。
【解説】
引数「比較方法」にvbBinaryCompare
を指定することで、大文字/小文字が区別されます。その結果、abc
のみがX
に置き換わるため、戻り値がXABC
となります。
なお、大文字/小文字の他、半角/全角、ひらがな/カタカナも区別されます。
文字列の一部分だけ置換
Replace("11111", "1", "A", 2, 2)
【結果】
AA11
が返されます。
【解説】
引数「開始位置」に2
、「置換回数」に2
をそれぞれ指定しています。
「開始位置」を2
にした時点で文字列が1111
と4桁になり、「置換回数」が2
回ですから、戻り値はAA11
となります。
文字を削除する(空文字で置換え)
Replace("A-B-C", "-", "")
【結果】
ABC
が返されます。
【解説】
置換後の文字列を空文字(””)にすると、指定した文字を削除できます。電話番号のハイフン除去など、データ整形によく使われます。
複数の置換をしたいパターン(Replaceをネストする)
Replace(Replace([会社名], "(株)", "株式会社"), "㈱", "株式会社")
【解説】
Replace
関数は基本的には、1回に1種類しか置換できませんが、入れ子(ネスト)することにより、複数種類の検索文字列
と置換文字列
を設定することができます。
例えば、入手したデータの会社名
フィールドに手入力した(株)
だったり、記号の㈱
などが混在している場合、そのどちらも株式会社
に置換したい場合があります。上記コードではネストにより、どちらの文言にも置換を対応させています。
ただし、複雑なパターンになると視認性が悪くなるため、一気にネストさせるよりも、変数を使って段階的に処理した方がわかりやすいです。
Dim s As String
s = STD㈱
s = Replace(s, "(株)", "株式会社")
s = Replace(s, "㈱", "株式会社")
使用例
冒頭で触れたように、Replace
関数はクエリやVBA、フォーム上など様々な箇所で使用することができます。ここではクエリとVBAで使用する事例をご紹介します。
クエリで使用するパターン
クエリの演算フィールドでReplace
関数を使用することができます。
【具体例】
下記のサンプルテーブルでは、取引先
フィールドに格納されているデータに、社名と株式会社の間に半角スペース、全角スペースが挿入されているものもあれば、スペースがないものも混在しています。

このスペース(空白)を一律削除する方法を説明します。
文字列の左側や右側、また両端のスペースであれば、LTrim
関数、RTrim
関数、Trim
関数で取り除くことができますが、文字列の中に含まれるスペースを削除する場合は、Replace
関数を活用することで実現できます。

取引先名調整: Replace([取引先]," ","")
上記クエリを実行することで、一律スペースを削除し「※※※株式会社」または「株式会社※※※」形式に統一されます。

VBAで使用するパターン
特定のフィールドについて、VBAで一括置換することも可能です。
Sub ReplaceMultiFieldADO()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String
Set cn = CurrentProject.Connection
strSQL = "SELECT 会社名 FROM T_顧客"
Set rs = New ADODB.Recordset
rs.Open strSQL, cn, adOpenDynamic, adLockOptimistic
Do Until rs.EOF
If Not IsNull(rs!会社名) Then
rs!会社名 = Replace(rs!会社名, "㈱", "株式会社")
End If
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set cn = Nothing
MsgBox "フィールドの変換が完了しました。", vbInformation
End Sub
上記コードは、ADO
で読み込んだテーブルのフィールド(会社名
)の全レコードに対して、文字列を置換している例です。
12~18行目のDo~Loop
ステートメントにより、会社名
フィールドがNull
でなければ、㈱
を株式会社
に置き換えています。
まとめ
本記事の要点をまとめます。
Replace関数とは
指定した文字列の中から、特定の部分を別の文字列に置き換える文字列操作関数。データの表記ゆれ(例:「-」「ー」「㈱」「(株)」など)の統一に有効。
構文と主な引数
Replace(文字列, 検索文字列, 置換文字列, [開始位置], [置換回数], [比較方法])
- 開始位置:どこから検索を始めるか
- 置換回数:何回まで置き換えるか
- 比較方法:大文字・小文字や半角/全角の区別の有無を指定可能
- 既定では「区別しない比較」が適用されやすい設定
使用例/活用方法
- クエリ(演算フィールド)での利用:空白を除去する場合など、例:Replace([取引先], " ", "")
- VBAでの一括置換:レコードセットをループしてフィールド値を置換して更新するスクリプト例あり
ポイント・注意点
- Replace関数は元の文字列を直接変えるのではなく、「置換後の新しい文字列」を返す仕様である点に注意。実データの更新は、クエリや VBA を用いて行う必要あり。
- 複雑な置換を一度にネストで処理すると可読性が落ちるため、段階的に処理する方法が実践的。