【エクセル】文字列から数字のみ抽出する:関数を使った抽出方法

時計 2024.11.30 / 時計

エクセルで文字列から数字のみ抽出する方法

記事ではMicrosoftのエクセルにおける、文字列から数字のみ抽出する方法について解説していきます。

エクセルを使った作業であるデータ群の文字列から数字のみ抽出したい場面はよくあります。たとえば計算の事前準備としてセルから不必要な文字列を削除することがあります。

このような場面で簡単に文字列から数字のみ抽出する数式や機能があります。

ここで紹介する数式ではいくつかの関数を組み合わせることで数字のみ抽出する処理を実現させています。またシンプルな文字列であればエクセルのフラッシュフィルという機能を使うことで簡単に数字だけを抽出することも可能です。

本記事を通して、エクセルでセル内の文字列から数字のみ抽出する方法について理解を深めてください。

ここではMicrosoft 365による最新のエクセルを使用しています。

Microsoft用語の確認

Microsoft 365とはMicrosoft社が提供しているOfficeアプリケーション(Outlook、Word、Excel、SharePoint、PowerPointなど)やサービスを利用できるサブスクリプション(月額課金制)のクラウドサービスです

エクセル:文字列から数字のみ抽出するとは

エクセルで文字列から数字のみ抽出するとはセルに入力されている文字列(データ)から数字1~9のみ取り出して、他の文字を取り除く操作です。

この操作により文字列から不必要な文字情報を除去して、必要な数値データを取得することができます。

文字列から数字のみ抽出する操作は次のような目的で利用されます。

  • 電話番号「+8190-123-4567」から数字だけ取り出してデータを整える
  • 計算の準備として「体重:60kg」や「価格:2000円」などから数値のみ取得する
  • 商品コード「ABC1234」から数字のみを取り出す

上記は目的のほんの一部ですが、エクセルでの様々な用途で文字列から数字を取り出す操作は必要となります。

文字列を数値に変換する

エクセルではセルに入力した数値の形式が文字列になっていると数式が計算されないなど様々な問題が発生します。

見た目はただの数値なのにエクセル上は数値ではなく文字列として扱われてしまうことがあります。文字列として認識されると、本来の目的である計算や集計はできません。

エクセルで文字列を数値に変換する方法について詳しくは以下記事をご参照ください。

文字列から数字だけ抽出する方法

セル内の文字列から数字だけを抽出する方法は以下2つの方法がお勧めです。

文字列から数字だけ抽出する方法
  • 関数を使った数字だけ抽出する方法(すべての文字列パターンに対応)
  • フラッシュフィルを使った数字だけ抽出する方法

関数を使った数字だけを抽出する方法はたくさんあります。たとえばLEFT関数やSUM関数、SUBSTITUTE関数を組み合わせた方法やMID関数、FIND関数などを使った方法などありますが、決まった文字列のパターンでしか利用できません。

本記事で紹介する方法はすべての文字列のパターンに対して利用できるため、基本的にここで紹介する数式を覚えるだけで問題ないです。

関数を使った数字だけ抽出する方法(すべての文字列パターンに対応)

関数を使った文字列から数字だけ抽出する方法は様々あります。その中で最もお勧めの数式は以下です。

文字列から数字だけ抽出する数式

=TEXTJOIN("", TRUE, IFERROR(MID(A1, SEQUENCE(LEN(A1)), 1) * 1, ""))

上記の数式は文字列全体を確認して数字のみを取り出す仕組みになっています。

具体的にはセルA1に含まれる文字列を1文字ずつ分解して数字部分だけを取り出して結合しています。

この数式の一番の特徴はどのようなパターンの文字列であっても正しく数字のみを抽出できることです。たとえば次のような文字列のパターンであっても数字を正しく抽出できます。

  • 文字列 + 数字(abc123)
  • 数字 + 文字列(123abc)
  • 文字列 + 数字 + 文字列(abc123def)
  • 数字 + 文字列 + 数字 + 文字列(123abc456def)

またこの数式の注意点として「負の数(-)」や「小数点(.)」は数字として認識しないため抽出されないです。マイナスや小数点を含めて取得したい場合は異なる方法を利用するしかないです。

紹介している数式の仕組み(各関数)について次項より詳しく解説しますが、理解していなくても数式は利用できるので必要ない方は飛ばしてください。

SEQUENCE(LEN(A1))

LEN()は文字数を数える関数です。たとえば引数A1が「abc123」であればLEN(A1)は「6」を返します。

そしてSEQUENCE()は連続した数値の配列を作成する関数です。A1が「abc123」の場合、SEQUENCE(LEN(A1))は以下の値を返します。

SEQUENCE(LEN(A1)) → {1, 2, 3, 4, 5, 6}

MID(A1, SEQUENCE(LEN(A1)), 1)

エクセルのMID関数は文字列の特定の位置から指定した文字数分の文字を取り出す関数です。構文は以下の通りです。

MID関数の構文

=MID(文字列, 開始位置, 文字数)

A1が「abc123」の場合、MID(A1, SEQUENCE(LEN(A1)), 1)は「MID(A1, {1, 2, 3, 4, 5, 6}, 1)」となり、この数式は以下の値を返します。

MID(A1, {1, 2, 3, 4, 5, 6}, 1) → {"a", "b", "c", "1", "2", "3"}

MID(A1, SEQUENCE(LEN(A1)), 1) * 1

MID関数で1文字ずつ取り出した文字列に1をかけることで文字列を数値に変換しています。

数字以外の文字は数値に変換できないためエラー(#VALUE!)となります。

そのためMID関数により返された{"a", "b", "c", "1", "2", "3"}に1をかけると以下の結果が得られます。

{"a", "b", "c", "1", "2", "3"}*1 → {#VALUE!, #VALUE!, #VALUE!, 1, 2, 3}

IFERROR(MID(A1, SEQUENCE(LEN(A1)), 1) * 1, "")

エクセルのIFERROR関数はエラーが発生した際にその値を代替値にする関数です。IFERROR関数の構文は以下の通りです。

構文

=IFERROR(値, エラー時の値)

IFERROR(MID(A1, SEQUENCE(LEN(A1)), 1) * 1, "")では第一引数の値にエラーがあれば空白文字にすることを意味します。つまり「#VALUE!」エラーを空白文字列に置き換えるということです。

{#VALUE!, #VALUE!, #VALUE!, 1, 2, 3} → {"", "", "", 1, 2, 3}

TEXTJOIN("", TRUE, ...)

TEXTJOIN関数は指定した区切り文字で複数のセルの文字列を結合する関数です。文字列と文字列の間にカンマやスペースなど区切り文字を使って文字列を結合したい場合に有効な関数です。

関連記事:【エクセル】セルの文字列や日付の結合方法

TEXTJOIN関数は以下構文に沿って使用します。

構文

=TEXTJOIN(delimiter, ignore empty, text1, [text2], …)

引数 説明
delimiter 結合する際に文字列の間に挿入する区切り文字を指定
ignore empty 空のセルを無視するかどうかを指定。Trueは無視、Falseは空のセルを含める
text1, text2, … 結合する文字列やセル範囲を指定

そのためここで紹介している数式では数値だけが残った配列を結合し、最終的に1つの文字列として返します。

TEXTJOIN("", TRUE, {"", "", "", 1, 2, 3}) → 123

フラッシュフィルを使った数字だけ抽出する方法

エクセルのフラッシュフィルとはデータのパターンを自動的に認識して同じパターンで他のデータも加工するツールです。

このフラッシュフィルを利用することで文字列から数字だけ抽出することができます。特に文字列のパターンが一定(規則性がある)であれば数式を使うよりも簡単に数字の抽出が実行できます。

POINT

文字列のパターンが明確であれば最速で数値の抽出が可能ですが、複雑な文字列の場合は前述している数式の利用がおすすめです

フラッシュフィルを使った文字列から数字だけ抽出する方法は以下の通りです。

  1. 次図のように1つ数字を抽出したデータを入力する
  2. エクセル:1つ数字を抽出したデータを入力
  3. データ入力したセルの下のセルを選択し、「データ」タブのデータツールグループにある「フラッシュフィル」をクリックする
  4. エクセル:データ入力したセルの下のセルを選択し、「データ」タブのデータツールグループにある「フラッシュフィル」をクリック

上記の操作を行うことで次図のように残りのセルに関しても数字のみが抽出されます。

エクセル:フラッシュフィルによって数字のみが抽出される
注意点

上記のサンプルのような文字列であればフラッシュフィルで数字のみ抽出できますが、複雑な文字列であれば数字のみの抽出は難しくなります

まとめ

本記事「【エクセル】文字列から数字のみ抽出する:関数を使った抽出方法」はいかがでしたか。

ここでは以下の項目について解説してきました。

  • エクセルで文字列から数字のみ抽出することについて
  • 関数を使った数字だけ抽出する方法について(すべての文字列パターンに対応)
  • フラッシュフィルを使った数字だけ抽出する方法について

エクセルで特定のデータ群から数字のみを抽出する必要があれば、本記事で紹介した数式やフラッシュフィルをぜひ使ってみてください。

エクセルには他にも様々な機能が備わっています。以下記事では仕事に役立つ機能を紹介しております。ぜひ読んでいただき仕事に役立つ機能を探してみてください。