(Gスプレッドシート)文字列から数字を抽出する

 Googleスプレッドシートで、文字列に含まれる数字だけを取り出す方法についてです。
 取り出したい範囲に応じていくつかの方法を紹介します。

  • REGEXEXTRACT関数やREGEXREPLACE関数を使って、文字列から数字だけを取り出すことができます。

手順

サンプルデータ

 B3:B9セルには全く同じ文字列が記録されています。

f:id:accs2014:20190525140908p:plain:w750

 これに対し、C3:C9セルには目的に応じて下記のような式を入力しています。

すべての数字を取り出してつなげる

 C3セルには次のように入力しています。

=REGEXREPLACE(B3,"[^0-9]","")

数字以外(「^」に注意)を空文字に置き換えることにより、結果的に数字がすべて残ります。

一連の数字ごとに抽出して記号で区切る

 C4セルには次のように入力しています。

=REGEXREPLACE(REGEXEXTRACT(B4,"[0-9].*[0-9]"),"[^0-9]+","_")

まず最初の数字から最後の数字までを抽出してから、数字以外の一連の文字をそれぞれ1文字の区切り記号(この例では「_」)に置き換えています。

一連の数字ごとに抽出して各セルに分割する

 C5セルには次のように入力しています。

=SPLIT(REGEXREPLACE(B5,"[^0-9]","_"),"_")

数字以外を区切り記号(この例では「_」)に置き換えてSPLIT関数で各セルに分割しています。SPLIT関数は連続する区切り文字や空白を無視するため(デフォルト)、案外短くなっています。

数字のうち最初に現れる一連のものだけ抽出する

 C6セルには次のように入力しています。

=REGEXEXTRACT(B6,"[0-9]+")

1文字以上の連続する文字列は「+」と表現できます。

数字のうち最後に現れる一連のものだけ抽出する

 C7セルには次のように入力しています。

=REGEXEXTRACT(B7,"([0-9]+)[^0-9]*$")

「$」は末尾の位置を指します。

数字のうち最初の1文字だけ抽出する

 C8セルには次のように入力しています。

=REGEXEXTRACT(B8,"[0-9]")

数字のうち最後の1文字だけ抽出する

 C9セルには次のように入力しています。

=REGEXEXTRACT(B9,"([0-9])[^0-9]*$")

 

実行結果

f:id:accs2014:20190525140906p:plain:right:w600

 実行結果です。
 なお対象セルが空白の場合、数字を含まない場合、数字のみの場合などエラーになるものもあります。

カンマ等の扱いについて

 カンマ等を含めて取り出す場合は式内にそれらを併せて記す必要があります。
 例えば、数字のほかカンマ・ドット・プラス・マイナス(全角含む)まで対象を広げる場合は次のようになります。
 
 例:すべての数字等を取り出す(C3セル)

=REGEXREPLACE(B3,"[^0-9,.+\-0-9,.+-]","")

 2つ目の「-」の前にバックスラッシュが必要なこと(半角マイナスを指定する際のエスケープ)と、全角の0と9の間の「-」が半角であることに注意してください。