【Excel】エクセルで特定の文字から特定の文字までを抽出・削除する方法
Excelで文字列を扱っていると、商品コードの角括弧内だけを取り出したい、メールアドレスからドメインだけを抽出したい、不要な記号で囲まれた部分を削除したい、といった場面があります。
特定の文字から特定の文字までを抽出・削除する処理は、LEFT関数、RIGHT関数、MID関数、FIND関数、SUBSTITUTE関数などを組み合わせることで対応できます。
開始文字と終了文字の位置を先に求めることが、数式を正しく作るための基本です。
この記事で扱う内容は、開始文字と終了文字の間を抽出する方法、文字列の途中を削除する方法、複数回出現する記号への対応、エラーを防ぐ式の作り方です。
サンプルデータは1行目を見出しとし、2行目以降にデータが入力されている前提で解説します。
エクセルで特定の文字から特定の文字までを抽出する方法
それではまず、開始文字と終了文字の間にある文字列を抽出する方法について解説していきます。
| A列 元の文字列 | B列 抽出結果 |
|---|---|
| 商品名【赤】サイズM | 赤 |
| 商品名【青】サイズL | 青 |
ここでは、A列の角括弧【】で囲まれた色名をB列へ取り出します。
FIND関数で開始文字と終了文字の位置を調べる仕組み
FIND関数は、指定した文字が文字列の何文字目にあるかを返す関数です。
たとえば、A2セルに商品名【赤】サイズMと入力されている場合、FIND(“【”,A2)の結果は4になります。
同様に、FIND(“】”,A2)の結果は6です。
抽出する文字数は、終了文字の位置から開始文字の位置を引き、さらに開始記号自身を除くために1を引いて求めます。
開始位置は FIND(“【”,A2)+1 です。
文字数は FIND(“】”,A2)-FIND(“【”,A2)-1 です。
全角の【と】は見た目が似た別の記号に置き換わると認識されません。
数式に入力する記号と、元データに含まれる記号が完全に同一か確認しましょう。
開始文字が見つからない場合はFIND関数がエラーになるため、後ほどIFERROR関数を組み合わせる方法も確認します。
MID関数で囲まれた文字列を取り出す操作
MID関数は、文字列の途中から指定した文字数だけを取り出す関数です。
B2セルに次の数式を入力します。
|
1 |
=MID(A2,FIND("【",A2)+1,FIND("】",A2)-FIND("【",A2)-1) |
この数式では、A2セルから【の次の文字を開始位置として、】の直前までを抽出します。

数式を入力後、B2セル右下のフィルハンドルを下方向へドラッグすると、3行目以降にも同じ考え方の式をコピーできます。
開始位置に+1を付けないと、抽出結果に開始記号の【まで含まれます。
一方、文字数の計算に-1を付けない場合は、終了記号の】まで抽出される点に注意が必要です。
抽出結果だけを残して元データを消したいときは、結果のセルをコピーし、形式を選択して貼り付けから値を選択します。
【操作のポイント】MID関数は開始位置と文字数を別々に指定するため、FIND関数で位置を計算してから組み合わせます。
TEXTAFTER関数とTEXTBEFORE関数を使う抽出式
Microsoft 365やExcel 2021以降では、TEXTAFTER関数とTEXTBEFORE関数を使うと式を読みやすくできます。
角括弧内の文字を抽出する場合は、次の数式です。
|
1 |
=TEXTBEFORE(TEXTAFTER(A2,"【"),"】") |
TEXTAFTER関数で【より後ろの文字列を取り出し、その結果からTEXTBEFORE関数で】より前を取り出します。

新しい関数を利用できる環境では、MID関数とFIND関数を重ねるよりも数式の意味を把握しやすい方法です。
ただし、古いバージョンのExcelでファイルを開く可能性がある場合は、MID関数とFIND関数を使う式のほうが互換性に優れます。
共有先のExcelバージョンが不明なときは、使用する関数を事前に確認しておくと安心です。
【操作のポイント】TEXTAFTER関数とTEXTBEFORE関数は、区切り記号の前後を順番に切り出す考え方です。
エクセルで特定の文字から特定の文字までを削除する方法
続いては、開始文字から終了文字までを含めて削除し、残したい文字だけを表示する方法を確認していきます。
| A列 元の文字列 | B列 削除後 |
|---|---|
| 商品名【赤】サイズM | 商品名サイズM |
| 商品名【青】サイズL | 商品名サイズL |
開始記号と終了記号の間だけでなく、記号そのものも削除する例です。
REPLACE関数で途中の文字列を置き換える数式
REPLACE関数は、指定位置から指定文字数を別の文字列へ置き換える関数です。
削除したい場合は、置き換える文字列に空文字列を指定します。
B2セルには次の数式を入力します。
|
1 |
=REPLACE(A2,FIND("【",A2),FIND("】",A2)-FIND("【",A2)+1,"") |
開始位置はFIND(“【”,A2)で求め、削除する文字数は終了記号の位置から開始記号の位置を引いて1を加えます。
削除では開始記号と終了記号も対象にするため、文字数の計算は抽出時と異なり+1です。

空の二重引用符 “” は、何も表示しない文字列を指定している状態です。
元のA列はそのまま保持されるため、数式の結果を確認してから値貼り付けで置き換えると安全でしょう。
削除対象の文字数は FIND(“】”,A2)-FIND(“【”,A2)+1 です。
この+1がないと、末尾の】だけが残ります。
LEFT関数とRIGHT関数で前後の文字を連結する方法
削除後に残す文字列を前半と後半に分けて連結する方法もあります。
次の数式は、【より前の文字列と、】より後ろの文字列をつなげます。
|
1 |
=LEFT(A2,FIND("【",A2)-1)&RIGHT(A2,LEN(A2)-FIND("】",A2)) |
LEFT関数では開始記号の直前までを取得し、RIGHT関数では終了記号の次から末尾までを取得します。
LEN関数はセル全体の文字数を求める関数です。
アンパサンド記号は文字列を連結する演算子であり、前半と後半を1つの結果として表示します。
REPLACE関数の式より長く見えますが、どの部分を残すかを目で追いやすい場合があります。
削除範囲の前後に余分な空白が残るデータでは、外側にTRIM関数を付けると連続した半角スペースを整えられます。
【操作のポイント】置換で消すならREPLACE関数、残す前後を明確にしたいならLEFT関数とRIGHT関数の連結が便利です。
SUBSTITUTE関数で決まった文字列を削除する使い分け
削除したい文字列が毎回同じで、開始位置や終了位置を探す必要がない場合はSUBSTITUTE関数が適しています。
たとえば、すべてのデータに含まれる「【在庫あり】」だけを消す式は次のとおりです。
|
1 |
=SUBSTITUTE(A2,"【在庫あり】","") |
この方法は、検索文字列が固定されている場合に短い数式で済みます。
一方、【赤】や【青】のように括弧内の文字が行ごとに変わる場合、SUBSTITUTE関数だけでは対応できません。
可変の文字列を削除する処理には、FIND関数で位置を取得する数式が必要です。
複数の定型語を消したい場合は、SUBSTITUTE関数を重ねる方法もありますが、対象が多いと式の管理が難しくなります。
データの規則性を見て、固定文字列なのか可変範囲なのかを先に判断しましょう。
【操作のポイント】SUBSTITUTE関数は固定語句の削除向けで、開始文字から終了文字までの可変範囲にはREPLACE関数が向いています。
複数の記号と区切り位置に対応する抽出方法
続いては、同じ記号が複数回現れる文字列や、区切り文字の位置を指定したい場合を確認していきます。
| A列 元の文字列 | B列 取り出したい部分 |
|---|---|
| 東京-営業部-田中 | 営業部 |
| 大阪-総務部-佐藤 | 総務部 |
TEXTAFTER関数で二つ目の区切り文字以降を指定する方法
TEXTAFTER関数には、何番目に現れる区切り文字を使うか指定する引数があります。
東京-営業部-田中という文字列で、最初のハイフンの後ろを取り出すには次の式です。
|
1 |
=TEXTAFTER(A2,"-") |
この結果は営業部-田中になります。
さらに二つ目のハイフンまでの部分を取り出すため、TEXTBEFORE関数を重ねます。
|
1 |
=TEXTBEFORE(TEXTAFTER(A2,"-"),"-") |
区切り文字が同じでも、先にどの位置より後ろを対象にするかを決めると、中央の項目だけを取り出せます。
TEXTAFTER関数の第3引数に2を入れると、二つ目のハイフンより後ろを直接取得できます。
部署名、支店名、ファイル名の拡張子など、区切り記号で構成されたデータに便利な方法です。
【操作のポイント】同じ区切り文字が複数ある場合は、最初に切り出す位置を決めてから、次の区切りまでを抽出します。
FIND関数の開始位置を指定して二つ目の記号を探す方法
TEXTAFTER関数が使えないExcelでは、FIND関数の第3引数で検索開始位置を指定します。
二つ目のハイフン位置を求める数式は次のとおりです。
|
1 |
=FIND("-",A2,FIND("-",A2)+1) |
内側のFIND関数が一つ目のハイフン位置を返し、その次の文字から外側のFIND関数が検索を始めます。
中央の文字列を取り出す完成式は、次のようになります。
|
1 |
=MID(A2,FIND("-",A2)+1,FIND("-",A2,FIND("-",A2)+1)-FIND("-",A2)-1) |
FIND関数を入れ子にする式は長くなりますが、旧バージョンのExcelでも使える実用的な方法です。
文字列内のハイフンが全角の-である場合は、数式内にも全角の-を入力する必要があります。
半角ハイフンと全角ハイフンは別の文字として扱われるため、表示だけで判断しないことが大切です。
【操作のポイント】二つ目の記号を探すときは、FIND関数の第3引数に一つ目の位置+1を指定します。
区切り文字がないデータを判定するIFERROR関数
データの一部に区切り文字がないと、FIND関数やTEXTAFTER関数はエラーを返します。
表示を整えるには、IFERROR関数で数式全体を囲みます。
|
1 |
=IFERROR(TEXTBEFORE(TEXTAFTER(A2,"-"),"-"),"") |
この式では、抽出できた場合は中央の文字列を表示し、エラーの場合は空白を表示します。
元データが不完全な可能性がある一覧では、IFERROR関数を加えてエラー表示を抑える運用が有効です。
空白ではなく未設定と表示したい場合は、最後の “” を “未設定” に変更します。
エラーを隠すだけでなく、なぜ抽出できないのかを確認する列を別に作ると、データ修正の漏れを防げます。
【操作のポイント】IFERROR関数は完成した抽出式の外側に付け、想定外の文字列にも対応できるようにします。
複数条件と改行を含む文字列の処理方法
続いては、開始文字と終了文字の組み合わせが複数ある場合や、セル内改行を含むデータを扱う方法を確認していきます。
| A列 元の文字列 | 抽出対象 |
|---|---|
| 注文ID[AB-123]処理済み | AB-123 |
| 氏名 山田太郎 改行 部署 営業 | 営業 |
角括弧と丸括弧を分けて処理する考え方
データによって【】と[]、または()が混在している場合は、記号ごとに式を作る必要があります。
同じ列に異なる括弧が混在する場合、IFERROR関数を使って優先順位を付ける方法があります。
|
1 |
=IFERROR(TEXTBEFORE(TEXTAFTER(A2,"【"),"】"),TEXTBEFORE(TEXTAFTER(A2,"["),"]")) |
この式は、最初に【】の抽出を試し、見つからなければ[]の抽出を実行します。
記号の表記ゆれがあるデータでは、入力ルールを統一することが数式を複雑にしない近道です。
元データを修正できる場合は、置換機能で記号を統一してから抽出する方法も検討しましょう。
置換機能は、ホームタブから検索と選択を開き、置換を選択して利用できます。
【操作のポイント】複数の記号に対応する式は作れますが、データの入力規則を整えるほうが保守しやすくなります。
CHAR関数でセル内改行を区切りとして扱う方法
セル内でAltキーを押しながらEnterキーを押して入力した改行は、CHAR(10)で指定できます。
改行より後ろの文字列を取り出す数式は次のとおりです。
|
1 |
=TEXTAFTER(A2,CHAR(10)) |
古いExcelでは、MID関数とFIND関数を使って同じ考え方を実現できます。
改行は画面上で見えにくい区切り文字ですが、CHAR(10)として数式で検索できます。
改行後に余分な空白がある場合は、TRIM関数を組み合わせて表示を整えましょう。
=TRIM(TEXTAFTER(A2,CHAR(10)))
Windows版Excelでは一般的にCHAR(10)を使用しますが、外部システムから取り込んだデータでは改行コードが異なる場合もあります。
【操作のポイント】セル内改行を検索するときは、直接改行を入力せずCHAR(10)を数式に指定します。
ワイルドカードと検索置換を使う場面
数式ではなく、特定のパターンを一度だけ削除したい場合は検索と置換も役立ちます。
たとえば、角括弧を含む文字列をまとめて確認しながら削除する際は、検索画面で対象列を選んでから操作します。
ただし、Excelの置換では、開始記号から終了記号までを可変長で一括削除する処理は数式ほど柔軟ではありません。
大量データで条件が行ごとに異なる場合は、数式で結果列を作り、確認後に値貼り付けする方法が安全です。
検索置換は固定文字列の一括修正、関数は位置が変わる文字列の抽出と削除、という使い分けが実務的です。
作業前には必ずファイルを複製し、元のデータを残しておきましょう。
【操作のポイント】検索置換は固定パターンに向き、可変の開始位置と終了位置を扱う場合は数式を使います。
抽出と削除で起こりやすいエラーと対処法
続いては、数式がうまく動かない原因と、確認したいポイントを解説していきます。
| 表示内容 | 主な原因 |
|---|---|
| #VALUE! | 開始文字または終了文字がない |
| 記号が残る | 文字数の+1や-1が不足している |
開始文字と終了文字の順序を確認する方法
開始文字より前に終了文字があるデータでは、MID関数の文字数が負の値になり、正しく抽出できません。
まず、FIND関数だけを別のセルへ入力し、各記号の位置を確認すると原因を見つけやすくなります。
開始記号の位置がC2、終了記号の位置がD2というように補助列を作る方法も実用的です。
複雑な数式を一度に完成させようとせず、位置の計算を分けて確認するとミスを減らせます。
データに不要な空白や異なる種類の記号がないかも確認しましょう。
開始位置と終了位置を補助列で確認した後、問題がなければ最終的な数式へまとめます。
【操作のポイント】抽出できないときは、最初に開始記号と終了記号の位置を個別に確認します。
全角半角と不可視文字を確認する方法
見た目が同じようでも、全角スペース、半角スペース、全角の括弧、半角の括弧は別の文字です。
外部サイトやPDFから貼り付けたデータには、表示されない改行や特殊なスペースが含まれることもあります。
CLEAN関数は印刷できない文字を削除し、TRIM関数は余分な半角スペースを整えます。
|
1 |
=TRIM(CLEAN(A2)) |
抽出前に文字列を整形する列を作ると、元データの品質が安定し、後続の集計にも活用できます。
なお、全角スペースはTRIM関数だけでは削除できないため、SUBSTITUTE関数で置き換える対応が必要です。
【操作のポイント】貼り付けデータは見えない文字を含むことがあるため、CLEAN関数とTRIM関数で整形してから抽出します。
数式を値に変換して元データを置き換える手順
抽出や削除の結果が正しいことを確認した後、元の列へ確定値として戻したい場合があります。
結果列を選択してコピーし、元データの列を選択したうえで、形式を選択して貼り付けから値を選びます。
この操作により、数式ではなく計算結果の文字列だけが貼り付けられます。
数式をそのまま元列へ貼り付けると参照先が変わる場合があるため、確定時は値貼り付けを選びましょう。
作業前に元のシートを複製するか、別ファイルとして保存しておくと復元しやすくなります。
元データを残す列、数式で確認する列、確定値を保存する列を分ける運用が安全です。
【操作のポイント】結果を固定するときはコピー後に値貼り付けを選び、数式の参照を残さないようにします。
まとめ エクセルで特定の文字から特定の文字までを抽出・削除する方法
エクセルで特定の文字から特定の文字までを抽出するには、MID関数とFIND関数を組み合わせる方法が基本です。
Microsoft 365などの新しいExcelでは、TEXTAFTER関数とTEXTBEFORE関数を使うことで、より読みやすい数式を作成できます。
途中の文字列を削除する場合は、REPLACE関数で開始位置と削除文字数を指定し、置換後の文字列を空白にします。
抽出では開始記号の次から終了記号の前までを求め、削除では開始記号と終了記号も含めて範囲を指定する点が重要です。
複数の区切り記号がある文字列では、TEXTAFTER関数の区切り位置指定、またはFIND関数の検索開始位置を活用します。
記号がない行や表記ゆれがあるデータにはIFERROR関数を加え、全角半角や不可視文字も確認しましょう。
最後に値貼り付けで確定する前には、必ず元データを残し、数式の結果を十分に確認することが大切です。