Excel でテキスト文字列から数値のみを抽出する方法は?
Excel を使用していると、「Order 1234」や「Score is 95.6」のように、セル内に数値とテキストが混在しているケースがよくあります。こうした文字列から数値部分のみを抽出することは、さらなる分析・計算・レポート作成のために頻繁に必要となります。数値が文字列の先頭、末尾、途中のいずれにあるか、あるいは小数点を含む数値だけを抽出したいかなど、目的に応じて、Excel にはこのタスクを実現するためのいくつかの実用的なアプローチが用意されています。
本ガイドでは、Excel でテキスト文字列から数値を抽出するさまざまな方法をご紹介します。具体的には、数値が文字列内のどこにあっても確実に抽出する方法や、小数を正しく扱う方法、さらに文字列の先頭または末尾から数値を取得するテクニックまでを網羅。それぞれの方法について、その仕組みや使いやすさ、そして効果的に活用するための特別なヒントを詳しく解説します。
テキスト文字列内の任意の位置から数値を抽出する
テキスト文字列内の任意の位置に埋め込まれた数値を抽出する必要は、特に複数のソースからインポートしたデータのクリーニングや、複数シートにわたる情報の統合を行う際に頻繁に生じます。こうしたシナリオには、Excel のバージョンや数式・アドインへの習熟度に応じて、それぞれ最適な使用場面が異なるいくつかの実用的かつ効率的な解決策が存在します。
♦ フラッシュフィルでテキスト文字列内の任意の位置から数値を抽出する
フラッシュフィルは、Excel 2013 以降で利用できる便利な機能で、ユーザーが示したパターンに基づいてテキスト文字列から数値を自動抽出します。数式やマクロが不要なため、シンプルなシナリオに最適です。
1。テキスト文字列の隣接セルに、抽出したい数値を手動で入力します(例:A2 に「Order123A」がある場合、B2 に「123」と入力)。
2。手動で入力したセルの下のセルをアクティブにして、Ctrl + Eを押します(または)データタブ > フラッシュフィルを使用)。Excel は最初の例に基づいて、類似するセルから自動的に数値を抽出し、下方に展開します。
この方法は、構造が一貫している小~中規模のデータセットに非常に適しています。ただし、フラッシュフィルはパターン認識に依存するため、データが極端に不規則であったり、数値とテキストの順序が混在している場合には、意図したとおりに抽出できないことがあります。フラッシュフィルが自動検出しない場合は、ファイル>オプション>詳細設定>フラッシュフィルを自動的に実行するが有効になっているか確認してください。
♦ 数式でテキスト文字列内の任意の位置から数値を抽出する
数式を使えば、テキスト文字列から数値を抽出する柔軟な方法が手に入ります。この方法は、組み込み関数や動的配列関数を活用し、特にソースデータが変更された際に自動で更新されるソリューションが必要な場面で役立ちます。
抽出した数値を表示する空白セルを選択し、お使いのExcel のバージョンに応じて、以下のいずれかの数式を入力してください。数式を入力後、必要に応じてフィルハンドルを下方向にドラッグして、他のセルにも適用します。下図をご参照ください。
● すべてのExcel バージョン:
=IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("$1:$"&LEN(A2))),1))* ROW(INDIRECT("$1:$"&LEN(A2))),0), ROW(INDIRECT("$1:$"&LEN(A2))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A2)))/10),"") この数式はすべての最新版Excel でご利用いただけ、Excel 365 やExcel 2021 をお使いでない場合にも信頼性の高い選択肢です。ただし、複数の関数を組み合わせた数式は大規模なデータセットにおいてパフォーマンスに影響を及ぼす可能性がある点にご注意ください。また、テキスト文字列に少なくとも1 つの数値文字が含まれていることを事前にご確認ください。含まれていない場合、数式が空白またはエラーを返すことがあります。
● Excel 365 またはExcel 2021 以降のバージョン:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, "")) この数式は新しい動的配列関数を活用しており、Office 365 またはExcel 2021 以降をご利用の方にとって、抽出プロセスを大幅にシンプルかつ効率的にします。単純な英数字の組み合わせだけでなく、より複雑な混在パターンもスムーズに処理可能。正しく対応バージョンをご使用かどうか、今一度ご確認ください。そうでなければ、期待通りに動作しない可能性があります。

ヒント:マイナス記号付きの数値や特殊記号を含む数値を扱う際は、抽出結果を確認し、その正確性を必ず検証してください。また、デフォルト設定では小数点が認識されない場合があるため、小数を抽出したい場合は下記の専用セクションをご参照ください。予期しない結果やエラーが発生した場合は、セル参照と数式の構文を再度ご確認ください。
♦ Kutools for Excel でテキスト文字列内の任意の位置から数値を抽出する
Kutools for Excel は、テキスト文字列内の任意の位置から数値を抽出する簡単で効率的な方法を提供します。数式よりもインタラクティブなインターフェースを好む方や、手作業なしに広範囲のデータを一括処理したい方に特に最適です。この機能を使えば、時間を大幅に節約でき、複雑な数式を覚える手間やトラブルシューティングの負担も解消されます。
- クリックします:Kutools > テキスト > テキストの抽出(下図参照)。

- テキストの抽出ダイアログボックスで、次の手順に従って操作してください。
(1)テキスト文字列を含むセルのリストを選択します。
(2)数値の抽出オプションを選択します(これにより、数値部分のみが抽出されます)。
(3)抽出された数値をソースデータの変更に応じて自動更新したい場合は、数式として挿入をオンにしてください(オフにすると、結果は静的なテキストになります)。
(4)OKをクリックします。
- プロンプトが表示されたら、出力先のセルを選択してください。結果を格納するのに十分な空白領域を確保し、既存のデータが上書きされないようにご注意ください。

- クリックしてください:OK。選択した各セルから数値が即座に抽出されます。

このアプローチはユーザーフレンドリーで、数式エラーや誤ったセル参照のリスクを軽減します。ただし、Kutools は標準のExcel インストールには含まれないアドインである点にご注意ください。バッチ処理や複雑な関数構文、VBA を避けたいユーザーに最適です。
数値が期待通りに抽出されない場合は、元のテキスト内に非表示文字や標準外の数字などが混在していないか、再度ご確認ください。また、一括変更を行う前に、必ずワークシートのバックアップを取得しておいてください。
♦ VBA コードでテキスト文字列内の任意の位置から数値を抽出する
数式やアドインだけでは対応しきれない高度な要件や特殊な状況において、VBA はExcel でテキスト文字列から数値を抽出する柔軟な手段を提供します。このアプローチは非常にカスタマイズ性が高く、繰り返しタスクの自動化や非標準的なデータセットの処理に特に効果的です。
- VBA エディターを起動するには、Alt + F11を押してください。Microsoft Visual Basic for Applicationsウィンドウで、挿入 > 標準モジュールをクリックすると、新しいモジュールウィンドウが開きます。そこに以下のコードを貼り付けてください。
- VBA コード:テキスト文字列から数値のみを抽出する:
Sub ExtrNumbersFromRange() Dim xRg As Range Dim xDRg As Range Dim xRRg As Range Dim nCellLength As Integer Dim xNumber As Integer Dim strNumber As String Dim xTitleId As String Dim xI As Integer xTitleId = "KutoolsforExcel" Set xDRg = Application.InputBox("Please select text strings:", xTitleId, "", Type:=8) If TypeName(xDRg) = "Nothing" Then Exit Sub Set xRRg = Application.InputBox("Please select output cell:", xTitleId, "", Type:=8) If TypeName(xRRg) = "Nothing" Then Exit Sub xI = 0 strNumber = "" For Each xRg In xDRg xI = xI + 1 nCellLength = Len(xRg) For xNumber = 1 To nCellLength If IsNumeric(Mid(xRg, xNumber, 1)) Then strNumber = strNumber & Mid(xRg, xNumber, 1) End If Next xNumber xRRg.Item(xI) = strNumber strNumber = "" Next xRg End Sub - コードを挿入後、F5キーを押すか、実行ボタンをクリックしてください。すると、処理対象のテキスト文字列の範囲を選択するよう促すプロンプトが表示されます。

- 範囲を選択したら、OKをクリックしてください。すると、出力先の開始セルを指定するよう促す2 つ目のプロンプトが表示されます。

- 再度 OKをクリックすると、元の選択範囲内に埋め込まれたすべての数値が抽出され、指定した出力領域に配置されます。
VBA 方式のメリットは、大規模なデータセットを効率的に処理できることに加え、基本的な VBA 知識があれば動作を自由にカスタマイズできる点です(例:先頭の数値のみを抽出する、小数を適切に処理する、特定の記号を除外するなど)。 ただし注意が必要です。VBA マクロは取り消しができないため、選択したリスト配置エリアが元のデータと重複していると上書きされる可能性があります。必ずバックアップファイルで事前にテストを行い、また、Excel でマクロが有効になっていることを確認してください。
テキスト文字列から小数点を含む数値のみを抽出する
テキスト文字列には、「weight:15.25kg」などのように小数点を含む数値が含まれることがあります。特に小数点付きの数値だけを抽出したい場合、標準的な数式では正確に取得できないことがあります。以下にご紹介する解決策は、こうした状況に的確に対応するために設計されています。
次の数式を使えば、テキスト文字列から小数点を含む数値を効率的に抽出できます。データの隣にある空セルに適切な数式を入力し、必要に応じてフィルハンドルで他の行にもコピーしてください。
● すべてのExcel バージョン:
=LOOKUP(9.9E+307,--LEFT(MID(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0}, $A2&"1023456789")),999),ROW(INDIRECT("1:999")))) この数式はExcel のほとんどのバージョンでご利用いただけ、抽出時に小数点を数値の一部として正しく認識するよう設計されています。テキスト内に不要なピリオド(。)が含まれていないか、データをよくご確認ください。小数が期待通りに抽出されない場合は、元の文字列に非標準の文字や書式の問題がないか再度ご確認ください。
● Excel 365:
=REGEXEXTRACT(A2,"[\d.]+") Excel 365 では、動的配列機能によって、複雑なテキスト文字列から抽出された小数点を含む数値をよりスマートに処理・返すことが可能です。Enterキーを押して数式を確定した後、必要に応じて下方向に数式を拡張してください。

ヒント:数値の代わりにゼロやエラーが繰り返し表示される場合は、データ内に有効な小数点を含む数値が含まれているか、セル参照が正しいかをご確認ください。数値が負の値と小数の両方を含む可能性がある場合は、数式の調整が必要です。
テキスト文字列の末尾から数値を抽出する
数値が常にテキスト文字列の末尾に現れる場合(例:「221_ProductID_446」や「923Ticket#2021」など)、末尾の数値のみ(「446」または「2021」)を抽出したいことがあります。ここでご紹介する数式は、まさにそうしたシーンのために設計されており、テキスト末尾の数値を確実に取り出します。
次の数式を空セルにコピー&ペーストしてください。古いバージョンのExcel では、Ctrl + Shift + Enterキーを押して配列数式を作成します。動的配列をサポートする新しいExcel バージョンでは、Enterキーを押すだけで OK です。
=RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))) フィルハンドルを下にドラッグして、この数式を他の行にも適用しましょう。この方法は、各文字列の末尾にある数値のみを抽出したい場合に最適です。途中や先頭に現れる数値は無視されるため、一貫したフォーマットが実現できます。

注:データにスペースや特殊記号が混在している場合や、数値の位置が一定でない場合は、この数式を調整するか、前述のより汎用的な方法をご利用ください。特にテキストで終わるなど、数字に似た非数値文字が含まれている場合には、出力結果が期待通りかどうかを必ずご確認ください。
テキスト文字列の先頭から数値を抽出する
テキスト文字列の先頭に現れる数値だけを抽出したい場合は、専用の数式を使ってその部分を切り出すことができます。
空の対象セルに数式を入力し、古いバージョンのExcel ではCtrl + Shift + Enterキーを押して配列数式を作成してください(Excel 365/2021 では、単に)Enterキーを押すだけで完了します)。
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1) その後、抽出したいすべての行に数式を下方向にドラッグしてください。この方法では、文字列の先頭にある数値のみが取得されます。文字列の他の位置に数値が含まれていても、先頭の数値部分だけが返されます。

ヒント:文字列の先頭文字が数値でない場合、この数式は空白またはエラーを返すことがあります。最良の結果を得るには、事前に元データを確認・整理してください。
テキスト文字列から数値を抽出するのは、Excel でのデータ準備において非常に一般的で重要な作業です。最適な方法は、データの構造やExcel のバージョン、そして数式やアドインへの習熟度によって異なります。上記の解決策が当てはまらない場合は、複数の手法を組み合わせるか、高度な要件に対応できる専用アドインをご検討ください。典型的な問題を回避するには、抽出結果に不整合がないか確認したり、バックアップコピーを作成したり、小規模なデータサンプルで事前に試してみるのが効果的です。
関連記事:
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得





