いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)特定の文字を消す方法

 Googleスプレッドシートで、テキスト中の特定の文字をすべて消す方法です。ここで「特定の文字」とは○文字目といったものではなく「『A』の字」や「すべてのひらがな」のように具体的な文字種を指すものとします。

  • SUBSTITUTE関数やREGEXREPLACE関数を使って、指定した種類の文字を削除することができます。
  • REGEXREPLACE関数の正規表現を使った範囲指定は強力で、英字やひらがな等の一括削除もできます。

SUBSTITUTE関数を使う方法

 次の画像では、SUBSTITUTE関数を使ってB3セル内のテキストから「A」の字をすべて除いた結果を得ています。

 C3セル

=SUBSTITUTE(B3,"A","")

 SUBSTITUTE関数はテキスト中の文字列を置き換える関数ですが、置き換え先(第3引数)を「""」とすることで指定した文字列を消すことができます。
 2文字以上の連続した文字列を消すこともできますが、ここでは記事の趣旨に沿って1文字だけ指定しています。



 SUBSTITUTE関数では消そうとする文字を複数種同時に指定することができません。
 よって2種類以上の文字を消す場合は次のように関数を重ねてネスト(入れ子)にすることとなります。
 ただし、このように複数種類の文字を消す場合は後述のREGEXREPLACE関数の方が便利です。

 C3セル

=SUBSTITUTE(SUBSTITUTE(B3,"A",""),"C","")

 


 SUBSTITUTE関数のちょっとした特徴として、指定した文字のうちn番目のものだけを消すことができます。
 次の画像ではテキスト中の「A」の字のうち、2番目のものだけを消しています。

 C3セル

=SUBSTITUTE(B3,"A","",2)

 第4引数で何番目のものを消すか指定します。ただしこの数字も1つしか指定できません。

REGEXREPLACE関数を使う方法

 Googleスプレッドシートが誇る強力なREGEXREPLACE関数を使う方法です。
 まず単純な例ですが、次の画像ではB3セルのテキストのうち「A」の字を消した結果を得ています。

 C3セル

=REGEXREPLACE(B3,"A","")

 REGEXREPLACE関数も基本的にSUBSTITUTE関数と同じく、テキスト中の文字列を置き換える関数です。
 第3引数を「""」とすることにより指定した文字列を消すことができます。



 ここからがREGEXREPLACE関数の強みです。第2引数内で角カッコ([ ])を使い、その中に消そうとする文字を並べればその文字をすべて消すことができます。
 SUBSTITUTE関数のように関数を重ねる必要がありません。

 C3セル

=REGEXREPLACE(B3,"[AC]","")

 もちろん3つ以上の文字を指定することも可能です。



 また、ハイフン(-)を使うことで消そうとする文字の範囲指定ができます。
 次の画像ではBからFまでの5種の文字を一括して消しています。

 C3セル

=REGEXREPLACE(B3,"[B-F]","")

 ハイフンを使う場合、指定する順序は昇順にする必要があります。「[B-F]」を「[F-B]」などとするとエラーになります。



 さらに範囲指定と個別の列記を同時に行うこともできます。
 次の例ではBからEまでの4種の文字とGの、合計5種の文字を一括して消しています。

 C3セル

=REGEXREPLACE(B3,"[B-EG]","")

英字・数字・ひらがな・カタカナを消す

 上記のハイフンを使った範囲指定の応用例です。
 次の画像ではB3テキストのうち、半角英大文字、半角数字、ひらがな、全角カタカナをそれぞれ一括して消しています。

 C3~C6セル

=REGEXREPLACE(B3,"[A-Z]","")
=REGEXREPLACE(B3,"[0-9]","")
=REGEXREPLACE(B3,"[ぁ-ん]","")
=REGEXREPLACE(B3,"[ァ-ヶ]","")

 ひらがなを指定するときの「ぁ」とカタカナの「ァ」「ヶ」は小さい文字(半角ではない)なので注意が必要です。
 

 また、上記の例を含む各種の例を次に示します。

消す文字の範囲式の例備考
半角英字=REGEXREPLACE(範囲,"[A-Za-z]","")
半角英大文字=REGEXREPLACE(範囲,"[A-Z]","")
半角英小文字=REGEXREPLACE(範囲,"[a-z]","")
全角数字=REGEXREPLACE(範囲,"[0-9]","")
半角数字=REGEXREPLACE(範囲,"[0-9]","")
=REGEXREPLACE(範囲,"\d","")
半角英字と半角数字とアンダースコア(_)=REGEXREPLACE(範囲,"\w","")
ひらがな=REGEXREPLACE(範囲,"[ぁ-ん]","")長音記号(ー)を消さない
全角カタカナ=REGEXREPLACE(範囲,“[ァ-ヶ]","")長音記号(ー)を消さない
半角カタカナ=REGEXREPLACE(範囲,“[ヲ-゚]”,"")
=REGEXREPLACE(範囲,”[。-゚]","")
゙や゚まで消すが。、「」の4種を消さない
。、「」の4種まで消す