PR

Excelで文字列から数字だけを抽出する方法|商品コード・型番にも対応

Excel
記事内に広告が含まれています。

「商品コードから数字だけ取り出したい」
「型番の中に含まれる番号だけ抜き出したい」

Excelで文字列を扱っていると、こんな場面は意外と多いですよね。
例えば、
・商品コード「ABC-12345」から「12345」だけ取得したい
・型番「TEST567XYZ」から「567」だけ取り出したい
・電話番号「090-1234-5678」から数字だけを残したい
このようなデータ整理は、Excel実務で意外とよくあります。

従来は MIDROWTEXTJOIN などを組み合わせる必要があり、数式がかなり複雑になりがちでした。

しかし、ExcelのREGEXEXTRACT関数を使えば、数字だけを一発で抽出できます。

本記事では、Excelで文字列から数字だけを抽出する方法を、初心者向けに分かりやすく解説します。

🔍今回の記事で分かること
  • Excelで文字列から数字だけを抽出する方法
  • REGEXEXTRACT関数とREGEXREPLACE関数の違い
  • 複数の数字がある場合の対処法
  • エラーになる原因と解決方法

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

結論から言うと、最も簡単な方法は、REGEXEXTRACT関数を使う方法です。
以下の表A列にある文字列から、実際に関数を使用して数字だけを抽出してみます。

実際に使用する数式

では、実際にA列から数字だけを抜き出すにはどのように数式を入力すればいいでしょうか。
結論、以下の数式を入力することで可能になります。

=REGEXEXTRACT(A2,"\d+")

この数式を入力することで、A列からきれいに数字だけを抽出できていることが確認できます。

数式の意味

この数式を見て、「\d+」って何?と思った方もいるかもしれません。
分解すると、この第2引数は以下の意味を持っています。

記述意味
\d数字
+直前の文字が1回以上続く

つまり、

\d+

は、「連続した数字」を意味していることになります。

※このREGEXEXTRACT関数では、この第2引数を色々指定することができます。
この点については後ほど詳しく解説します。

なぜ従来の関数では大変だったのか

以前は、
・MID
・ROW
・TEXTJOIN
・IF
など様々な関数を組み合わせる必要がありました。

そうなると必然的に数式が長くなり、
・修正しづらい
・重くなりやすい
・初見で読めない
という問題がありました。

従来の複雑な例

冒頭に紹介した数字だけを抜き出す方法ですが、実はREGEXEXTRACT関数を使わなくても可能ではあります。

ただし、REGEXEXTRACT関数を使わない場合、以下のような数式になってしまいます。

=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1),""))

先ほどのケースで見てみましょう。
実際に使用してみると、REGEXEXTRACT関数と同様、数字だけを抽出できています。

ですが、かなり長い数式ですし、複雑で分かりにくいですよね。
しかもROW+INDIRECT関数は、データが大量にあるほど処理が重くなる可能性が高くなります。

REGEXEXTRACT関数ならシンプルで簡単

冒頭で紹介した通りですが、REGEXEXTRACT関数を使うことで数字だけを抜き出すことができます。

=REGEXEXTRACT(A2,"\d+")

従来の複雑な数式と比較して、シンプルで分かりやすく、管理もしやすいのがメリットです。

REGEXEXTRACT関数とは?

「そもそもREGEXEXTRACT関数って何?」
と思われた方もいると思うので、簡単に説明します。

名前は難しく見えますが、簡単に言うと「条件に一致した部分だけ」を取り出せる関数です。
REGEX → 正規表現(文字のルール)
EXTRACT → 抽出
という言葉を組み合わせた関数ですね。

REGEXEXTRACT関数の基本構文は以下の通りです。

=REGEXEXTRACT(テキスト, パターン,[リターン_モード],[大文字と小文字の区別])

それぞれの引数説明は以下の通りです。

引数説明
テキスト(文字列)抽出元となる文字列を指定
パターン抽出したい文字のルールを指定
リターン_モード(一致結果の返し方)
※省略可
一致した結果をどのように取得するかを指定
大文字と小文字の区別(case_sensitivity)
※省略可
大文字・小文字を区別するか設定

基本的には、パターンの使い方が理解できればOKです。

複数の数字がある場合は?

REGEXEXTRACT関数を使うことで、簡単に数字だけを抽出できることは分かりました。

では、以下のように数字と文字列が交互に交じっている場合はどうなるでしょうか。

この場合、REGEXEXTRACT関数は最初に一致した数字のかたまりだけを取得します。

最初の数字のみを抽出したいケースは、REGEXEXTRACT関数を活用しましょう。

すべての数字を取りたい場合

では、最初の数字だけでなく、すべての数字をつなげたいケースはどうしたらいいでしょうか。

結論、その場合はREGEXREPLACE関数を使用します。
REGEXREPLACE関数とは、文字列の中から特定の文字を探して、一括で置き換えできる関数です。

先ほどのケースで、REGEXREPLACE関数を使い数字全部を抜き出してみます。
数式は以下のように入力します。

=REGEXREPLACE(A2,"\D","")

こちらを入力することで、すべての数字を抽出することができます。

この数式では、第2引数で数字以外を指定して、第3引数の空文字に変換することを意味しています。

引数パターン意味
第2引数\D数字以外
第3引数“”何も表示しない

つまり、数字以外を削除しているということになります。

ハイフンを含む電話番号など、数字以外で区切られている文字列を抽出するには便利な関数です。

なお、Excelでは文字列を自動的に日付や数値へ変換してしまうことがあります。
特に商品コードや電話番号を扱う場合、先頭のゼロが消えたり、「1-2」が日付に変換されたりするケースも少なくありません。

Excelの自動変換トラブルについては、こちらの記事で詳しく解説しています。

👉Excelで入力が勝手に変わる原因と対処法|日付変換・ゼロ消える・E+表示を解決

うまく抽出できない原因

REGEXEXTRACT/REGEXREPLACE関数は非常に便利な関数ですが、
・関数自体が使えない
・思った結果にならない
・エラーが表示される
ことがあります。

ここでは、よくある原因と対処法を確認していきましょう。

REGEXEXTRACT関数が使えない

REGEXEXTRACT関数は比較的新しい関数です。
そのため、Excelのバージョンによっては使用できない場合があります。

関数を入力しても候補に表示されない場合や、#NAME?エラーになる場合は、利用中のExcelが対応していない可能性があります。

その場合は、Microsoft 365のExcelを使用するか、従来の関数で代用する必要があります。

複数の数字があると思った結果にならない

例えば、数字と数字の間に記号があるケースです。

ABC123XYZ456

この場合、REGEXEXTRACT関数では以下の通り最初の数字のかたまりしか抽出されません。

そのため、すべての数字をつなげて取得したい場合は、REGEXREPLACE関数を使います。
この数式では、数字以外を削除するため、結果は次のようになります。

必要な状況に応じて、使い分けをしてください。

数字が存在しない

抽出元の文字列に数字が含まれていない場合、REGEXEXTRACT関数ではエラーになります。

例えば、セルに「商品番号XXX」と入力されているような場合です。
この状態で、

=REGEXEXTRACT(A3,"\d+")

と入力すると、抽出できる数字がないためエラーが発生します。

空欄で表示したい場合は、IFERROR関数を組み合わせます。

=IFERROR(REGEXEXTRACT(A3,"\d+"),"")

文字列処理では、見た目は同じでも空白や全角・半角の違いが原因で一致しないケースもあります。
検索や照合がうまくいかない場合は、こちらも確認してみてください。

👉Excelで「一致しているのに一致しない」原因5選|FALSEになる・検索でヒットしない理由と解決方法

REGEX関数でよく使うパターン一覧(第2引数)

ここでは、第2引数でよく使うパターンを並べてみました。
抽出したい条件に合うものを選択し、数式を活用してみてください。

パターン意味
\d数字
\D数字以外
\s空白
[A-Z]英大文字
[a-z]英小文字
.任意の1文字
+1文字以上
*0文字以上
^先頭
$末尾

REGEX関数はFILTER関数と組み合わせることで、「条件に一致するデータだけ抽出する」といった使い方もできます。FILTER関数について詳しく知りたい方は、こちらも参考にしてください。

👉ExcelのFILTER関数とは?複数条件・空白除外・エラー対策まで徹底解説!

よくある質問(FAQ)

数字だけでなく英字も抽出できますか?

できます。
例えば英字だけなら:
=REGEXEXTRACT(A2,”[A-Za-z]+”)
などと入力することで、英字を抽出することができます。

REGEXEXTRACTで全部の数字を取得できますか?

通常は最初の一致のみ取得します。
すべて取得したい場合は、REGEXREPLACE関数を使いましょう。

古いExcelでも使えますか?

Excelのバージョンによっては利用できません。
Microsoft365では使用可能です。

電話番号のハイフンも消せますか?

できます。
例えば、
=REGEXREPLACE(A2,”\D”,””)
と入力すると、
090-1234-5678が、09012345678のように
ハイフンだけ削除し、数字だけを残せます。

Excelで数字だけ抽出したいならREGEX関数が便利

Excelで文字列から数字だけを抽出したい場合は、REGEXEXTRACTやREGEXREPLACE関数を使うと簡単です。

特に、

  • 商品コード
  • 型番
  • 社員番号
  • CSVデータ
  • 電話番号

などを扱う実務ではかなり役立ちます。

従来の複雑な数式よりシンプルに書けるため、今後はREGEX系関数を覚えておくと、データ整理や文字列処理の作業効率が大きく向上します。
特に商品コードやCSVデータを扱うことが多い方は、一度試してみてください。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました