「12AA」を数値と文字に分けるには? 数値の入った文字列の分離 | EXCELトピックス

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
~
ad. 価格範囲を指定して商品を探せます

数値の入った文字列を数値と文字に分けるには?

Excelで「400ABC」や「ABC400」のように、数値と文字列が混在するセルから、数値部分と文字部分をきれいに2列に分けたいことがあります。この記事では、現在のExcelの仕様に合わせ、数式を使わない最も簡単な方法と、最新の関数を使ったスマートな解決策を解説します。

方法1: 【数式不要】「フラッシュフィル」機能で一瞬で分ける

Excelの「フラッシュフィル」を使えば、関数を1つも書くことなく、データのルール性を自動感知して文字と数値を分離してくれます。「数値+文字」「文字+数値」のどちらのパターンでも有効です。

操作手順

  1. 元のデータ(A列)の隣に、「数値部分(B列)」と「文字部分(C列)」の空欄列を用意します。
  2. 2行目のセルに、お手本となるデータを手入力します。
    • B2セルに「400」と入力してEnter。
    • C2セルに「ABC」と入力してEnter。
  3. 入力し終えたB2セルを選択した状態で、キーボードの Ctrl + E を押します(Macは ⌃ + E)。下の行の数値だけが自動で一瞬で抽出されます。
  4. 同様に、C2セルを選択した状態で Ctrl + E を押します。文字部分だけが自動で抽出されます。

結果

A (元データ) B (数値) C (文字)
1 元のデータ 数値部分(Ctrl+Eを実行) 文字部分(Ctrl+Eを実行)
2 400ABC 400 ABC
3 123DEF 123 DEF

方法2: 【最新関数】TEXTBEFORE / TEXTAFTER関数で分ける

データが追加・変更された際、リアルタイムに自動計算させたい場合は、モダンExcelで追加された新しいテキスト関数を使うのが最もスマートです。

パターンA:「数値 + 文字」の順で並んでいる場合

「400ABC」のように数字が先、文字が後ろにある場合は、アルファベットの先頭を区切り文字として判定します。しかしデータの種類によって文字が変わるため、現在のExcelでは以下のように数式を組み立てます。

  • 数値部分を抜き出す数式(B2セル):
    =TEXTBEFORE(A2, {"A","B","C","D","E","F"})

    ※{"A","B"..."F"}部分に、出現する可能性のあるアルファベットや文字の候補を指定することで、その文字より「前(BEFORE)」にある数値をすべて抽出します。

  • 文字部分を抜き出す数式(C2セル):
    =TEXTAFTER(A2, B2)

    ※先ほど抽出したB2セルの数値より「後(AFTER)」にある文字列をそっくりそのまま切り出します。

パターンB:「文字 + 数値」の順で並んでいる場合

「ABC400」のように文字が先、数字が後ろにある場合は、数字の始まりを基準にします。

  • 文字部分を抜き出す数式(B2セル):
    =TEXTBEFORE(A2, {"0","1","2","3","4","5","6","7","8","9"})

    ※いずれかの数字が最初に出現する場所より「前」にある文字列を切り出します。

  • 数値部分を抜き出す数式(C2セル):
    =--TEXTAFTER(A2, B2)

    ※文字(B2)より「後」にある数字を切り出します。先頭に「--」を付けることで、切り出した文字としての数字を、Excelが計算可能な正しい「数値データ」に変換できます。

注意点

  • フラッシュフィル(方法1)は非常に強力ですが、元データを書き換えても結果は自動更新されません。データが頻繁に更新される表では、方法2の関数を用いたアプローチを行ってください。
  • 「400ABC123」のように数値と文字が3階層以上に細かくサンドイッチされている複雑なデータの場合、上記の新関数でも処理しきれないため、その場合はPower Query(パワークエリ)機能の「列の分割(非数字から数字への移行)」を活用してください。

まとめ

Excelで数値と文字列を分離したい場合、まずは一番手軽なショートカットキー「Ctrl + E(フラッシュフィル)」を試すのが実務では最速です。連動性を持たせたい場合は、従来の複雑なLOOKUPの配列数式ではなく、可読性の高いTEXTBEFORE関数やTEXTAFTER関数を用いて、シンプルかつメンテナンスしやすい表を作成しましょう。

画像で「12AA」を数値と文字に分ける方法について総まとめ

使用した関数について

IFERROR関数でエラー時の値を指定する方法とVLOOKUPとの組み合わせ方についてわかりやすく解説
IFERROR関数についてIFERRORの概要エラー時の値を指定Excel関数=IFERROR( 値, エラー時の値 )概要 指定した値がエラーの場合に、代替の値を返します。エラーでない場合はその値を返します。 #DIV/0! や #VALUE! などのエラーを処理できます。 数式のエラーによる表示崩れを防ぐために役立...
INDIRECT関数で数値かどうかを判定する方法についてわかりやすく解説
INDIRECT関数についてINDIRECTの概要文字列で指定された参照を返すExcel関数=INDIRECT( 参照 )概要 INDIRECT関数は、指定された文字列をセル参照に変換し、そのセルの値を返します。間接的にセルや範囲を参照するため、動的な範囲指定に便利です。 INDIRECT関数は、セル参照を動的に扱いた...
LEFT関数で指定した数の文字列を先頭から取得する方法と日付処理やRIGHTと組合せ方法についてわかりやすく解説
LEFT関数とLEFTB関数についてLEFTとLEFTBの概要文字列を先頭から取り出すExcel関数=LEFT( 文字列 , 文字数 )=LEFTB( 文字列 , 文字数 )概要 指定した文字数分の文字を先頭(左側)から取り出す 文字列の先頭から、文字数分の位置までの文字列を取り出す 末尾から取り出す関数はRIGHTで...
LEN関数で文字数をカウントする方法と複数セルの文字数取得や空白処理についてわかりやすく解説
LEN関数とLENB関数についてLENの概要文字数をカウントExcel関数=LEN( 文字列 )=LENB( 文字列 )概要 文字数をカウントする関数で、LENBは全角文字(2バイト文字)を2と判定します 半角カナでガダバパなどは、濁点を1文字として扱うため、ダはLENであっても2文字とカウントされる。ダ(...
LOOKUP関数で検索値に一致するデータを表示する方法についてわかりやすく解説
LOOKUP関数についてLOOKUPの概要検索値に一致するデータを取得Excel関数=LOOKUP( 検索値 , 検索範囲 , 表示対象範囲 )概要 検索値に一致するデータを検索して表示 検索範囲にある検索値について、表示対象範囲を表示する 検索範囲について昇順で並び替える必要がある 漢字が含まれるときは、並び替え→オ...
MID関数で文字列の取り出す方法と右から取り出す方法や応用テクニックをわかりやすく解説
MID関数とMIDB関数についてMIDとMIDBの概要指定位置から文字列を取り出すExcel関数=MID( 文字列 , 開始位置 , 文字数 )=MIDB( 文字列 , 開始位置 , 文字数 )概要 開始位置から指定した文字数分、文字列を取り出す 指定した文字以降の文字を取り出すには、指定した文字の位置をSEARCHで...
ROW関数で行番号を取得する方法とROWSとの比較やINDEXとの組合せについてわかりやすく解説
ROW関数についてROWの概要行番号を取得するExcel関数=ROW( 対象 )概要 そのセルの行番号を取得する =ROW()と、引数をナシとすると、その関数の位置の行番号が表示される 偶数であるかを判断するISEVEN、奇数であるかを判断するISODD関数と組み合わせて使用されることが多い 行番号(1,2,3,4,5...