エクセルで「商品コードA-1234」や「売上:500,000円」のように、文字と数字が混在したデータから数字だけを取り出したい場面は少なくありません。
文字列から数字のみを抽出する操作は、データ整理や集計の精度を高めるうえで非常に重要なスキルです。
本記事では、関数を使って文字列から数字だけを抽出する方法から、整数のみに変換するテクニック、数値のみをコピーまたは削除する手順まで、実践的な操作を詳しく解説していきます。
データクリーニングに悩んでいる方はぜひ参考にしてみてください。
目次
エクセルで文字列から数字のみを抽出する方法の全体像
それではまず、エクセルで文字と数字が混在したデータから数字だけを抽出する基本的なアプローチについて解説していきます。
数字の抽出方法は、データの形式や求める結果によっていくつかのパターンに分かれます。
数字抽出の主な方法
①数字が文字列の末尾や先頭に固定されている場合:RIGHT・LEFT・MID関数で切り出す
②数字の位置が変動する場合:FIND・LEN・SUBSTITUTE関数を組み合わせる
③Excel 365の場合:TEXTBEFORE・TEXTAFTER・REGEXEXTRACTなど新関数を活用する
④数字のみを残したい場合:ユーザー定義関数(VBA)を使う
どの方法を使うかは、データのパターンと使用しているエクセルのバージョンによって決まります。
まずデータの規則性を確認することが、適切な方法を選ぶための第一歩でしょう。
RIGHT・LEFT・MID関数で固定位置の数字を抽出する
数字の位置が一定のパターンで固定されている場合は、RIGHT・LEFT・MID関数が最もシンプルで使いやすい選択肢です。
【基本構文と例】
=RIGHT(A1, 4) → A1の右端から4文字を取り出す(例:「商品1234」→「1234」)
=LEFT(A1, 3) → A1の左端から3文字を取り出す(例:「123円」→「123」)
=MID(A1, 3, 5) → A1の3文字目から5文字分を取り出す
たとえば社員番号が「EMP001」のように常に末尾3桁が数字であれば、=RIGHT(A1,3)で「001」が取り出せます。
取り出した結果を数値として扱いたい場合は、VALUE関数を組み合わせます。
=VALUE(RIGHT(A1,3))とすることで、文字列ではなく数値として取得できます。
データの桁数が固定されている場合は、VALUE+RIGHT(またはLEFT・MID)の組み合わせが最もシンプルで確実です。
FIND関数とLEN関数を組み合わせた柔軟な抽出
数字の桁数や位置が固定されていない場合は、FIND関数やLEN関数を組み合わせることで対応できます。
たとえば「売上:123456円」のようなデータで、コロンの後ろから「円」の前までの数字を取り出す場合は次のような数式を使います。
=MID(A1, FIND(“:”,A1)+1, FIND(“円”,A1)-FIND(“:”,A1)-1)
→ コロンの次の文字から「円」の直前までの文字列を取り出す
→ VALUE関数で囲めば数値として取得可能
この方法は、区切り文字が決まっている場合に非常に有効です。
文字列内に特定の記号や文字がある場合は、FINDで位置を特定してMIDで取り出すというパターンを覚えておくと応用が利くでしょう。
SUBSTITUTE関数で文字を削除して数字だけを残す方法
数字以外の文字がすべてわかっている場合は、SUBSTITUTE関数でそれらを空文字に置換して数字だけを残すことができます。
=SUBSTITUTE(SUBSTITUTE(A1,”円”,””),”売上:”,””)
→「売上:500000円」→「500000」という流れで不要な文字を削除
複数の文字を削除したい場合はSUBSTITUTE関数を入れ子にします。
削除したい文字が少ない場合は比較的シンプルに書けますが、多い場合は数式が長くなりがちです。
その場合はVBAのユーザー定義関数を使う方が効率的でしょう。
整数のみに変換・数値のみをコピーする実用操作
続いては、小数点以下を切り捨てて整数のみにする操作と、数値だけを選択してコピーする方法を確認していきます。
INT・TRUNC関数で小数点以下を除いた整数のみを取得する
数値データから整数部分だけを取り出したい場合は、INT関数またはTRUNC関数を使います。
| 関数 | 動作 | 例(-3.7の場合) |
|---|---|---|
| INT(値) | 小数点以下を切り捨て(マイナスは負方向に) | -4 |
| TRUNC(値) | 小数点以下を単純に切り捨て | -3 |
| ROUNDDOWN(値,0) | 指定桁数で切り捨て | -3 |
正の数の場合はINTとTRUNCは同じ結果になりますが、負の数では異なる挙動を示します。
単純に小数点以下を切り捨てて整数にしたい場合はTRUNCまたはROUNDDOWN(値,0)を使うのが安全です。
会計処理や在庫数の管理など、整数のみを扱う業務では特に重要な知識でしょう。
「条件を選択してジャンプ」で数値セルのみを選択してコピーする
表の中に文字列セルと数値セルが混在している場合、数値セルのみを選択してコピーすることができます。
ホームタブの「検索と選択」から「条件を選択してジャンプ」を開き、「定数」→「数値」のみにチェックを入れてOKをクリックすると、数値が入力されているセルだけが選択されます。
その状態でCtrl+Cでコピーし、貼り付け先に貼り付けることで数値データのみを移動できます。
この操作は、入力フォームや混在データの整理に非常に役立つテクニックです。
数値のみを削除してテキストを残す操作
反対に、セル内の数値部分を削除してテキストだけを残したい場合は、置換機能を活用します。
Ctrl+Hで検索と置換を開き、「検索する文字列」に正規表現で数字を指定できるバージョン(Excel 365など)では「[0-9]+」と入力することで数字のみを空白に置換できます。
正規表現が使えない場合は、0〜9の各数字をSUBSTITUTE関数で順番に空文字に置き換えていく方法が使えます。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,”0″,””),”1″,””),”2″,””),”3″,””),”4″,””),”5″,””),”6″,””),”7″,””),”8″,””),”9″,””)
→ 0〜9のすべての数字を空文字に置換して削除する
やや長い数式になりますが、確実に数字だけを削除できます。
数字の削除と文字の抽出は、SUBSTITUTE関数の入れ子で対応できると覚えておきましょう。
Excel 365で使える数字抽出の最新関数
続いては、Excel 365で使用可能な新しい関数を使って数字を抽出する方法を確認していきます。
Excel 365では正規表現関連の新関数が追加されており、従来よりも柔軟に文字列から数字を取り出せるようになっています。
REGEXEXTRACT関数で正規表現を使って数字を抽出する
Excel 365の新関数「REGEXEXTRACT」を使うと、正規表現のパターンで文字列から数字だけを取り出すことができます。
=REGEXEXTRACT(A1, “[0-9]+”)
→ A1から最初に現れる連続した数字を抽出する
=REGEXEXTRACT(A1, “\d+”)
→ 上と同じ意味(\dは数字を表す正規表現)
この関数はExcel 365(Microsoft 365サブスクリプション)の最新版でのみ使用可能です。
古いバージョンのエクセルでは使えないため、バージョンを確認してから活用しましょう。
REGEXEXTRACT関数を使えば、複雑なネスト関数を書かずに数字だけを抽出できるのが大きなメリットです。
TEXTBEFORE・TEXTAFTER関数による柔軟な文字列操作
Excel 365ではTEXTBEFORE・TEXTAFTERという関数も使用できます。
TEXTBEFORE(文字列, 区切り文字)は区切り文字より前の部分、TEXTAFTER(文字列, 区切り文字)は後ろの部分を取り出す関数です。
=TEXTAFTER(A1, “:”)
→「売上:12345」の場合、「:」の後ろの「12345」を返す
=TEXTBEFORE(TEXTAFTER(A1,”:”),”円”)
→「売上:12345円」の「:」と「円」の間の「12345」を返す
MID+FINDの組み合わせよりも直感的に書けるため、Excel 365環境では積極的に活用するとよいでしょう。
VBAユーザー定義関数で汎用的な数字抽出を実現する
どのバージョンでも使える汎用的な方法として、VBAで数字のみを抽出するユーザー定義関数を作成する方法があります。
Function 数字抽出(str As String) As String
Dim i As Integer
Dim result As String
For i = 1 To Len(str)
If Mid(str, i, 1) Like “[0-9]” Then
result = result & Mid(str, i, 1)
End If
Next i
数字抽出 = result
End Function
このVBAコードをAlt+F11のVBAエディタに貼り付けることで、=数字抽出(A1)という形でセルから数字のみを取り出せるようになります。
バージョンを問わず使える柔軟な方法として、VBAユーザー定義関数は非常に有用でしょう。
まとめ
本記事では、エクセルで数字のみを抽出する方法について、関数を使ったアプローチからVBAまで幅広く解説してきました。
固定位置の数字ならRIGHT・LEFT・MID関数、区切り文字がある場合はFIND+MID、不規則な場合はVBAユーザー定義関数が効果的です。
Excel 365ではREGEXEXTRACT・TEXTBEFORE・TEXTAFTERなどの新関数が活用でき、より簡潔に数字を抽出できます。
データのパターンを見極めて最適な方法を選ぶことが、効率的なデータ整理の鍵となります。
整数のみへの変換にはINT・TRUNCを、数値セルのみ選択するには条件ジャンプ機能を使いこなしましょう。
これらのテクニックを習得することで、データクリーニングの作業効率が大幅に向上するでしょう。