Replace関数 …文字列内の検索文字列を置換文字列に置き換える

[Access 2016/2013/2010/2007]

AccessのReplace関数の使い方を紹介します。

スポンサーリンク

書式

Replace(文字列, 検索文字列, 置換文字列, 開始位置, 置換回数, 比較モード)

文字列から検索文字列を検索し、見つかった文字列を置換文字列で置換して返します。

戻り値の型:文字列型 (String)

引数

引数 指定 説明
文字列 expression 必須 置換対象となる文字列を指定
検索文字列 find 必須 検索のキーワードとなる文字列を指定
置換文字列 replace 必須 置換する文字列を指定
開始位置 start 省略可 検索の開始位置を指定。省略した場合は、1文字目から検索を開始する
置換回数 count 省略可 置換する回数を指定。検索されたすべての文字列を置換したい場合は、-1を指定するか、指定を省略する
比較モード compare 省略可 文字列の比較モードを 表A の値で指定。クエリやフォームでの使用で省略した場合は「2」、モジュール(VBA)での使用で省略した場合は「-1」が指定されたものと見なされる

表A 引数 比較モード の設定値

定数 説明
-1 vbUseCompareOption Option Compareステートメントの設定にしたがう(Option Compareステートメントの設定がない場合はバイナリモード)
0 vbBinaryCompare バイナリモードで比較する(全角/半角、大文字/小文字、ひらがな/カタカナを区別する)
1 vbTextCompare テキストモードで比較する(全角/半角、大文字/小文字、ひらがな/カタカナを区別しない)
2 vbDatabaseCompare Accessの設定にしたがう(Accessの設定の既定値はテキストモード)

使用例

使用例 戻り値 説明
Replace("ざるそば", "そば", "うどん") ざるうどん 「そば」が「うどん」に置き換わる
Replace("ざるそば", "かけ", "もり") ざるそば 検索文字列が見つからない場合、文字列がそのまま返る
Replace("ざるそば", "そば", "") ざる 置換文字列が長さ0の文字列「""」の場合、文字列から検索文字列が削除される
Replace("AbAbAb", "Ab", "Xy") XyXyXy すべての「Ab」が「Xy」に置き換わる
Replace("AbAbAb", "Ab", "Xy", 2) bXyXy 2文字目から検索を開始して置換する
Replace("AbAbAb", "Ab", "Xy", 1, 1) XyAbAb 先頭から検索を開始して1回だけ置換する
Replace("AbAbAb", "AB", "Xy", 1, -1, 0) AbAbAb バイナリモードでは「Ab」と「AB」は異なるので置換が行われない
Replace("AbAbAb", "AB", "Xy", 1, -1, 1) XyXyXy テキストモードでは「Ab」と「AB」は同じなので置換が行われる
Replace(Null, "Ab", "Xy")
Replace("AbAbAb", Null, "Xy")
Replace("AbAbAb", "Ab", Null)
エラー 文字列検索文字列置換文字列のいずれかがNull値の場合、エラーになる

Replace関数のエラーに対処する

引数文字列がNull値(未入力)の場合、ほとんどの文字列操作関数がNull値を返すのに対して、Replace関数ではエラーが発生するので注意が必要です。エラーを回避するには、Nz関数を使用してNull値を長さ0の文字列「""」に変換してから、Replace関数による置換を行いましょう。Nz関数は、「Nz(データ,Nullの代替値)」の形式で使用して、データが入力されていない場合にデータを長さ0の文字列「""」に変換する関数です。

式1
× 新バージョン: Replace([バージョン],"2013","2016")

[バージョン]フィールドのデータの「2013」を「2017」に置換したい。式1のようにReplace関数だけで置換すると、[バージョン]フィールドが未入力の場合にエラーになってしまう。

式2
 新バージョン: Replace(Nz([バージョン],""),"2013","2016")

式2のようにNz関数を使用して、[バージョン]フィールドがNull値の場合に「””」に変えると、エラーを回避できる。

スポンサーリンク

関連記事