こんにちは、あんこ先生です。
文字列の一部を置換したいとき、なかなか思うようにできないことありませんか?
特定か所だけ変えたいのに他の部分も置換されたりするやつです。
そこで、今回は文字列を置換する関数を使っていろんなパターンに挑戦してみます。
使用頻度は高くありませんが、かゆいところに手が届く内容なのでぜひ読み進めてください。
いつもどおり、コードは極力コピペで動くようにしています。
- 位置が特定できる場合はReplace関数を使うこと
- 文字を特定できる場合はSubstitute関数を使うこと
- 他の文字を巻き込んでしまうときの回避方法
[ad1]
Contents
位置を特定して文字列を置換する方法│Replace

Replace関数
Replace関数は、元データに対して開始位置とそこからの長さ分を、指定した文字列に置換します。
対象は1か所のみで、必ず置換されます。
元データよりも長い位置を指定することで、文字列をつなげることもできます。
ただ、Concatenate関数か&でつなげた方が簡単です。
また、置換文字を””とすれば対象をそのまま除外することもできます。
Replace(元データ(文字列),”開始位置”,”長さ”,”置換文字”)
Replace(元データ(単一テーブル),”開始位置”,”長さ”,”置換文字”)
Label01.Textプロパティ
//文字列の7文字目から開始して4文字分を"Automate"に置換する
Replace(TextInput01.Text,7,4,"Automate")
//文字列の11文字目(最後尾)から開始して0文字分を" & Automate"に置換する
Replace(TextInput01.Text,11,0," & Automate")
元データは文字列だけでなく、単一項目テーブルも指定できます。

文字を特定して文字列を置換する方法│Substitute
Substitute関数
Substitute関数は、元データに指定した文字列があるか照合して、一致すれば置換します。
パラメータで、一致したすべて、または指定した1か所のみ置換するかを選べます。
そ例外の複数置換には対応していませんし、そもそも対象がなければ置換されません。
また、置換文字を””とすれば対象をそのまま除外することもできます。
Substitute(元データ(文字列),”置換対象”,”置換文字”[,置換対象(数値)])
Substitute(元データ(単一テーブル),”置換対象”,”置換文字”[,置換対象(数値)])
Label01.Textプロパティ
//文字列"Apps"を"Automate"に置換する
Substitute(TextInput01.Text,"Apps","Automate")
//文字列"Apps"を"Apps & Automate"に置換する
Substitute(TextInput01.Text,"Apps","Apps & Automate")
こちらも、元データは文字列だけでなく、単一項目テーブルも指定できます。

スペースを除外する方法│Trim TrimEnds

Trim関数・TrimEnds関数
Trim関数なら、どこにスペースがちりばめられていても、単語間の1つだけを残してすべて削除できます。
TrimEnds関数は、元データの先頭と末尾にあるすべてのスペースを削除します。
こちらは単語間のスペースには何もしません。
なお、どちらも全角・半角の区別はなく、範囲内のすべてのスペースが対象です。
スペースの削除に限っては便利な関数ですね。
Trim(元データ(文字列))
Trim(元データ(単一テーブル))
Label01.Textプロパティ
//単語間のひとつ以外のスペースを除外
Trim(TextInput01.Text)
//文章前後のみのスペースを除外
TrimEnds(TextInput01.Text)
特定範囲に絞って置換する方法│Left Mid Right

位置関数の概要
Left関数は、元データの先頭から指定した長さ分を抜き取ります。
Mid関数は、元データに対して開始位置とそこから指定した長さ分を抜き取ります。
Righ関数は、元データの末尾から指定した長さ分を抜き取ります。
若干使いにくいですが、大抵Mid関数のみで対応できます。
Substitute関数は置換範囲を指定できませんが、これらの関数を組み合わせることで可能となります。
例えば対象”Power”が4つある文字列に対して、2つめと3つめを”Replace”に置換するといったこともできます。
Label01.Textプロパティ
//3番目の置換
Substitute(TextInput01.Text,"Power","Replace",3)
//2と3番目を置換
Left(TextInput01.Text,11)& //1単語目
Substitute(Mid(TextInput01.Text,12,20),"Power","Replace")& //2&3単語目
Mid(TextInput01.Text,32,99) //4単語目
まとめ
今回は、いろんなパターンの文字列の一部を置換してみました。
使い道としてはこのあたりでしょうか。
- 年度を変える 2021➡2022
- 商品名や担当者を変える
- テーブルごと置換し、データソースを更新する
本当にたまにしか使いませんが、知っているとなにかと便利です。
使い方はアイデア次第!さっそくアプリに組み込んで動作させてみましょう!