Excel 文字列から数字のみを抽出する方法

数字と数字以外が混在する文字列から

数字のみを抽出する方法を紹介します。

よく見かける手法では、ある程度ルールの

決まった文字列から抽出しますが

この記事ではどんなルールでも対応します。

(単純に数字以外を削除します)

また全角の数字は半角の数字に

変換した上で残します。

文字列結果
A-00050005
090-1234-XXXX0901234
0あ1うえ56お7012567

赤字…全角から半角に変換

文字列から数字のみを抽出する方法

サンプルファイルを使用する場合

手間なく抽出したい場合の

サンプルファイルを用意しています。

B列に文字列を入力すると

C列に抽出結果が表示されます。

このファイルでは文字列が

100文字までの制限です。

これ以上の文字列を処理する場合は

100のCY列以降にも数式をコピーし

2行目に続く連番を設定した上で

C列のCONCAT関数の範囲を広げてください。

数式を作成する場合

まずこのようなExcelを用意します。

抽出したい文字列(B列)と結果のセル(C列)と

1からの連番(D~M列)…文字数を用意します。

サンプルでは13まで用意していますが、

文字列の最も長い文字数まで用意してください。

(サンプルでは090-1234-XXXXが13文字)

サンプルシートの枠組み。抽出したい文字列(B列)と結果のセル(C列)と1からの連番(D~M列)

次に文字数1の下のセルに数式を設定します。

IFERROR(NUMBERVALUE(IF(文字数:行指定に$<=LEN(文字列:列指定に$),MID(文字列:列指定に$,文字数:行指定に$,1),"-“)),"")

数式の図解

この数式を全文字数列-全行にコピーします。

数式を全文字数列-全行にコピーする図解

この時点で数字のみがセルに表示されます。

数字のみがセルに表示されるキャプチャ

これを行ごとにCONCAT関数を設定して

文字列結合をすれば完成です。

CONCAT関数で文字列結合をして完了するキャプチャ

応用:文字数のセル指定を削除(COLUMN関数)

数式として分かりやすいので

2行目でベタ指定をしましたが、

関数で自動的に指定する方法もあります。

「文字列:列指定に$」のセル指定を

「COLUMN()-COLUMN(最初の数式のセル:行列$指定)+1」に

変更すると2行目の入力に依存しない

より安全な数式になります。

文字数のセル指定をCOLUMN関数に変更した例

関連記事

セルの列と行の位置を取得(ROW関数とCOLUMN関数)

文字列を連結する(CONCAT関数)

様々な言語圏の数字表記(小数点やカンマ)の文字列を数値に変換(NUMBERVALUE関数)

各種エラーの発生条件と判定関数

文字列の長さ(文字数)を取得(LEN関数)

左・右より文字数を指定して文字列を切り出す(LEFT/MID/RIGHT関数)

IF系関数の使い方・活用方法の記事一覧

フォローする