【Excel 関数】TEXTSPLIT・TEXTBEFOREで文字列処理がどう変わったか — LEFT/MIDと比べてみた

  • TEXTSPLIT・TEXTBEFORE・TEXTAFTER の基本的な使い方
  • 従来の LEFT / MID / FIND を使った方法との比較
  • CSVデータの加工・型番分割・氏名の分離への応用例
  • 対応している Excel のバージョン

「LEFT や MID を組み合わせた式が複雑でメンテできない」「型番を分割するたびに数式を組み直している」という方に向けて書いています。


どんな場面で使うか

  • 「A-001-2025」のような型番コードを区切り文字で分割する
  • 「田中 太郎」「田中 太郎」のような氏名をスペースで分割して姓・名に分ける
  • CSV からインポートしたカンマ区切りのデータを列に分解する

基本説明

この記事では textsplit-textbefore-sample.xlsx の A 列を使います。

セル 用途
A2〜4 A-001-2025 型番(製品コード-ロット-年度)
A7〜8 田中 太郎 氏名(スペース区切り)
A11 東京,大阪,名古屋,福岡 カンマ区切り文字列

サンプルデータ

従来の方法と何が違うか

従来、区切り文字より前の文字列を取り出すには、FIND で区切り文字の位置を調べてから LEFT で切り取る、という組み合わせが必要でした。

従来の例(「-」より前の文字列を取り出す):

=LEFT(A2, FIND("-", A2) - 1)

これでも動きますが、区切り文字が見つからない場合にエラーになる、ネストが深くなって読みにくい、といった問題があります。

TEXTBEFORE を使った場合:

=TEXTBEFORE(A2, "-")

同じ結果を1つの関数で書けます。区切り文字が見つからない場合の動作も引数で制御できます。

従来(LEFT + FIND) 新関数(TEXTBEFORE等)
記述量 多い 少ない
読みやすさ 複雑になりやすい 直感的
エラー処理 IFERROR が必要になることが多い 引数で制御できる
バージョン 全バージョン対応 M365・Excel 2022以降のみ

手順

TEXTBEFORE 関数 — 区切り文字より前を取り出す

書式:

=TEXTBEFORE(テキスト, 区切り文字, [インスタンス番号], [一致モード], [一致の終了], [見つからない場合])

よく使うのは最初の2つの引数だけです。

使用例: 型番「A-001-2025」から最初の「-」より前(「A」)を取り出す

=TEXTBEFORE(A2, "-")

2番目の「-」より前(「A-001」)を取り出す場合:

3番目の引数に 2 を指定すると、2番目に出現する「-」より前の文字列を返します。

TEXTBEFOREの使用例

TEXTAFTER 関数 — 区切り文字より後を取り出す

書式:

=TEXTAFTER(テキスト, 区切り文字, [インスタンス番号], [一致モード], [一致の終了], [見つからない場合])

TEXTBEFORE と対になる関数で、区切り文字より後の文字列を返します。

使用例: 型番「A-001-2025」から最後の「-」より後(「2025」)を取り出す

=TEXTAFTER(A2, "-", -1)

3番目の引数に -1 を指定すると、最後に出現する区切り文字より後の文字列を返します。

TEXTAFTERの使用例

TEXTSPLIT 関数 — 区切り文字で分割して複数セルに展開する

書式:

=TEXTSPLIT(テキスト, [列区切り文字], [行区切り文字], [空を無視], [一致モード], [パディング])

使用例: 「A,B,C」をカンマで分割して横に展開する

=TEXTSPLIT(A2, ",")

スピル機能によって、結果が複数セルに横に展開されます。

複数の区切り文字を使う場合(「,」と「;」どちらでも分割):

=TEXTSPLIT(A2, {",", ";"})

区切り文字を {} の中に複数指定できます。

縦に展開したい場合(行区切り文字として使う):

=TEXTSPLIT(A2, , ",")

2番目の引数(列区切り文字)を省略して、3番目(行区切り文字)にカンマを指定すると縦方向に展開されます。

TEXTSPLITの使用例


サンプル例

型番コードを分解する

型番「製品コード-ロット番号-年度」(例: A001-L042-2025)から各要素を取り出す例です。

製品コード: =TEXTBEFORE(A2, "-")           → A001
ロット番号: =TEXTBEFORE(TEXTAFTER(A2,"-"),"-") → L042
年度:       =TEXTAFTER(A2, "-", -1)         → 2025

TEXTSPLIT を使うとまとめて展開できます:

=TEXTSPLIT(A2, "-")

B列・C列・D列に「A001」「L042」「2025」が展開されます。

氏名を姓・名に分割する

スペース区切りの氏名「田中 太郎」を分割する例です。

姓: =TEXTBEFORE(A2, " ")   → 田中
名: =TEXTAFTER(A2, " ")    → 太郎

全角スペースの場合は区切り文字を全角スペースにします:

姓: =TEXTBEFORE(A2, " ")

半角・全角どちらでも対応するには SUBSTITUTE で統一してから処理します:

=TEXTBEFORE(SUBSTITUTE(A2, " ", " "), " ")

CSV形式の文字列を列に分解する

1つのセルに「東京,大阪,名古屋,福岡」と入っている場合:

=TEXTSPLIT(A2, ",")

B列から始まって東京・大阪・名古屋・福岡が横に展開されます。


よくあるエラー

#VALUE! エラーが出る

区切り文字が見つからない場合に出ることがあります。TEXTBEFORE・TEXTAFTER は最後の引数「見つからない場合」に返す値を指定できます。

=TEXTBEFORE(A2, "-", 1, 0, 0, "なし")

「-」が見つからない場合は「なし」を返します。

#SPILL! エラーが出る

TEXTSPLIT はスピル関数のため、展開先に値が入っていると #SPILL! エラーになります。展開先のセルを空にしてください。

「名前が無効」エラーが出る

TEXTSPLIT・TEXTBEFORE・TEXTAFTER は Microsoft 365 または Excel 2022(Excel for Microsoft 365 の 2022年3月更新)以降 で使えます。それ以前のバージョンでは関数として認識されません。

古いバージョンでの代替手段:

  • TEXTBEFORE相当: =LEFT(A2, FIND("区切り文字", A2) - 1) + IFERROR
  • TEXTSPLIT相当: Power Query の「列の分割」機能を使う

まとめ

関数 用途
TEXTBEFORE 区切り文字より前の文字列を取り出す
TEXTAFTER 区切り文字より後の文字列を取り出す
TEXTSPLIT 区切り文字で分割して複数セルに展開する

LEFT + FIND の組み合わせより記述が短くなり、数式の意図が読みやすくなります。複雑なネストを解消してメンテナンスしやすい数式に変えたい場合に、まず試してみる価値があります。

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