(Gスプレッドシート)ワイルドカードの値を変えずに置換を行う

 Googleスプレッドシートで、関数での置換を行う際にワイルドカードとして指定した文字列の内容をそのまま変更することなく置換を実行する方法についてです。
 ワイルドカードと書きましたが、実際に行うのは正規表現によるマッチングです。つまりはREGEXREPLACE関数により実現します。

  • REGEXREPLACE関数を用いることで、ワイルドカードとしてマッチした文字列の値を変えることなく置換を行うことができます。

手順

ワイルドカードの前や後に文字列を加える例

f:id:accs2014:20190601170047p:plain:right:w500

 B3セルに文字列が記録されています。この文字列には3つの数が含まれています。
 これら3つの数に、単位として「円」という文字を加えるものとします。
 C3セルに次のように入力します。

=REGEXREPLACE(B3,"([0-9]+)","$1円")

 式中の「[0-9]+」は、連続しているひとかたまりの半角数字を表しており、これにより3つの数をいずれも置換の対象にすることができます。さらにカッコを加えることにより、これらの数字に「$1」という番号が自動的に割り振られます(3つの数にいずれも「$1」という番号が割り振られ、いわばグループ化されます)。
 置換先の文字列を「"$1円"」と指定することにより、それぞれの数字はそのままで、後ろに「円」の文字が加えられます。

f:id:accs2014:20190601170043p:plain:right:w500

 実行結果です。
 置換先の文字列を「"金$1"」や「"金$1円"」とすることにより、、それぞれの数字の前、あるいは前後に文字列を加えることも可能です。

ワイルドカードの途中に文字列を加える例

f:id:accs2014:20190601170040p:plain:right:w550

 B3セルに文字列が記録されています。この文字列には英大文字と数字の組み合わせからなる3つの型番が含まれています。
 これらの型番の半角英大文字と数字の間に「-」を加えるものとします。
 C3セルに次のように入力します。

=REGEXREPLACE(B3,"([A-Z]+)([0-9]+)","$1-$2")

 「[A-Z]+」により連続する半角英大文字を、「[0-9]+」により連続する半角数字を、置換の対象としています。
 それぞれをカッコで囲むことにより、英字の方には「$1」という番号が、そして数の方には「$2」という番号が自動的に与えられます。
 置換先の文字列を「"$1-$2"」と指定することにより、それぞれの英字・数はそのままで、間に「-」の文字が加えられます。

f:id:accs2014:20190601170038p:plain:right:w550

 実行結果です。