答え
先に答えを示します。
前提として、対象の文字列がA1
にあるとします。
以下の式により数値だけを抽出することができます。、
=VALUE(REGEXEXTRACT(A1,"[0123456789,-]{1,}"))
解説
この関数では、2つの関数を利用しています。
VALUE
文字列を数値に変換します。
抽出される文字列が 12,345
のようにカンマ区切りとなる場合もあるが、それも空気を読んで正確に数値に変換してくれます。
=VALUE("12,345")
REGEXEXTRACT
正規表現(REGEX)に従って、一致する部分文字列を取り出します(EXTRACT)。
第1引数にテキスト、第2引数に正規表現が入ります。
=REGEXEXTRACT("今日は1,000円の弁当を食べた", "[0123456789,-]{1,}")
正規表現
正規表現とは文字列の集合を一つの文字列で表現する方法です(Wiki調べ)。*1
今回の正規表現を説明します。
[0123456789,-]{1,}
[0123456789,-]
は 0123456789,-
の文字のうち1つでも一致すればOKということを条件とする正規表現です。
{1,}
は 1 文字以上の文字列長であることを条件とする正規表現です。
この2つを組み合わせたものが今回の正規表現1文字以上の数値(マイナス、カンマも含む)となります。
エラー処理
失敗した時に変な結果が出ないようにするには IFERROR
を使います。
=IFERROR(VALUE(REGEXEXTRACT(A1,"[0123456789,-]{1,}")),0)
*1:軽い具体例を言うと、「数字だけ」、「超○○」、「○○円」のようにある一定の条件を持った文字列を示す時に使う文字列です。