Excelで特定の文字から特定の文字までを抽出する方法|TEXTBEFORE・TEXTAFTER・MID

Excelで特定の文字から特定の文字までを抽出する方法|TEXTBEFORE・TEXTAFTER・MID
結論(先に答え)

Microsoft 365なら =TEXTBEFORE(TEXTAFTER(A2, "【"), "】") で「【」から「】」までの中身を抽出できます。どのバージョンでも使える方法は =MID(A2, FIND("【",A2)+1, FIND("】",A2)-FIND("【",A2)-1) です。

文字列の一部を取り出す方法をまとめて比べたいときは、文字列を抽出する方法まとめ(早見表)が便利です。

「ノートPC【A-101】ブラック」のような文字列から、2つの目印文字に挟まれた部分だけ(この例では A-101)を取り出したい——型番・コード・カッコ内の抽出で頻出の処理です。この記事では、新関数のTEXTBEFORE&TEXTAFTER方式と、旧バージョンでも動くMID&FIND方式の両方を解説します。

Excelで特定の文字から特定の文字まで(【】の中身)を抽出する図解
目次

サンプルデータ

AB
1商品表記コード
2ノートPC【A-101】ブラック(ここに数式)
3マウス【B-220】無線
4キーボード【C-330】日本語配列
練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

方法1:TEXTAFTER+TEXTBEFORE(Microsoft 365)

手順:B2 に TEXTBEFORE と TEXTAFTER の式を入れて Enter

「ノートPC【A-101】ブラック」から、【】の中の A-101 を取り出します。 B2 に次の式を入力して、Enter キーを押します❶。

B2 に入れる式
=TEXTBEFORE(TEXTAFTER(A2,"【"),"】")
TEXTAFTER(A2,"【") テキスト(【より後ろ)"】" 区切り文字(】より前)
ひとことでまず「【」より後ろを取り、そこから「】」より前を取って、【】の中だけを取り出す
式を分けて読むと(色は画像の枠と同じ)
テキストTEXTAFTER(A2,"【")
まず何をする?
→ 「【」より後ろを取る(A-101】ブラック)
区切り文字"】"
次にどこまで?
→ 「】」より前を取る
自分の表で使うときは
「【」と「】」を、取り出したい範囲の前後の文字に変えます。例:かっこ( )の中を取り出す=TEXTBEFORE(TEXTAFTER(A2,"("),")")
  • Microsoft 365 の関数です。ほかのバージョンでは次の MID+FIND の方法を使います。
エクセルのTEXTBEFOREとTEXTAFTERで【】の中を取り出す式と、元の文字列のセルを色分けした画面
エクセルのTEXTBEFOREとTEXTAFTERで【】の中を取り出す式と、元の文字列のセルを色分けした画面

確認:【】の中の「A-101」が出た

エクセルのTEXTBEFOREとTEXTAFTERで【】の中のA-101が取り出せたことを示した画面
エクセルのTEXTBEFOREとTEXTAFTERで【】の中のA-101が取り出せたことを示した画面

答えは A-101 になりました❷。式は、次の順に計算しています。

  1. TEXTAFTERで「【」より後ろを取る
    ⇒ A-101】ブラック
  2. TEXTBEFOREで「】」より前を取る
    ⇒ A-101
ヒント:下へコピーできる
B4 までコピーすると、B-220・C-330 も取り出せます。

方法2:MID+FIND(全バージョン対応)

C2に入力(C4までコピー):MIDとFINDで、【】の中身を取り出す(全バージョン対応)
数式=MID(A2,FIND("【",A2)+1,FIND("】",A2)-FIND("【",A2)-1)
ひとことで【の次の文字から、】の手前までの文字数だけ、取り出す
FIND("【",A2)+1
開始位置です。「【」の位置の、次の文字から始めます
FIND("】",A2)-FIND("【",A2)-1
文字数です。「】」の位置から「【」の位置を引いて、1を引きます
補足TEXTBEFORE・TEXTAFTERが使えない、Excel 2019以前では、こちらを使います。
ポイントFINDで「【」と「】」の位置を調べ、MIDで開始位置=【の次から、長さ=】の位置−【の位置−1だけ取り出しています。TEXTAFTER/TEXTBEFOREが使えないExcel 2019以前ではこちらを使ってください。
練習用Excelファイル(無料ダウンロード)
抽出練習の練習ファイルで、【】の中身を取り出せます商品表記を書き換えて、取り出されるコードが変わるのを確認できます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

応用:同じ文字が複数あるとき

ポイント目印の文字が複数回登場する場合、TEXTAFTER・TEXTBEFOREの第3引数で「何個目か」を指定できます。例えば =TEXTAFTER(A2, "-", 2) は2個目の「-」より後ろを返します。末尾から数えるときは -1(最後の区切り)が便利です。
練習用Excelファイル(無料ダウンロード)
B2に式を入れて、B4までコピーすると、3つのコードが一度に取り出されます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

【実機で検証】【】がないとき・2 つあるとき

エクセルで【】の間を取り出す式で【】がないときのエラーや2つ目を取り出すときや空にする書き方を確かめた画面
エクセルで【】の間を取り出す式で【】がないときのエラーや2つ目を取り出すときや空にする書き方を確かめた画面
ためしたこと結果
「注文【A-12】りんご」から取り出すA-12
【】がない(TEXTAFTER+TEXTBEFORE)#N/A
【】がない(MID+FIND)#VALUE!
「【A】と【B】」の 1 つ目A
2 つ目(TEXTAFTER(A3,"【",2))B
TEXTAFTER と TEXTBEFORE の第 6 引数を “” にする(空になる)

【】がない文字では、TEXTAFTER は #N/A、MID+FIND は #VALUE! になりました。TEXTAFTER と TEXTBEFORE は、第 6 引数に “” を書くと、見つからないときに空にできます。2 つ目の【】は、TEXTAFTER の第 3 引数に 2 を指定すると取り出せました。

まとめ

やりたいこと数式
【】の中身を抽出(365)=TEXTBEFORE(TEXTAFTER(A2,”【”),”】”)
【】の中身を抽出(全バージョン)=MID(A2, FIND(“【”,A2)+1, FIND(“】”,A2)-FIND(“【”,A2)-1)
特定の文字より後ろすべて=TEXTAFTER(A2,”文字”)
特定の文字より前すべて=TEXTBEFORE(A2,”文字”)

▶ こんな場合はこちら:特定の文字より後ろ(以降)を抽出する/TEXTBEFORE・TEXTAFTER関数の基本

特定の文字から特定の文字までの抽出のよくある質問

エクセルで、特定の文字から特定の文字までを抽出する式は?

Microsoft 365 なら =TEXTBEFORE(TEXTAFTER(A2,"【"),"】") です。どのバージョンでも使える式は =MID(A2,FIND("【",A2)+1,FIND("】",A2)-FIND("【",A2)-1) です。「ノートPC【A-101】ブラック」から A-101 が取り出せます。

目印の文字が無いセルは、どうなりますか?

エラーになります。TEXTAFTER+TEXTBEFORE の式は #N/A、MID+FIND の式は #VALUE! になりました。TEXTAFTER と TEXTBEFORE は、第6引数に "" を書くと、見つからないときに空にできます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次