ExcelのTEXTBEFOREの使い方|ハイフンの前を取り出す
商品コード「SKU-204-Blue」から「SKU」だけを取り出したいときは、ExcelのTEXTBEFOREを使います。元データをA列に残し、B列に抽出結果を表示する方法を見ていきましょう。
本文の商品コードは架空の例です。数式の結果と図解は「期待値」、つまりMicrosoftの公式仕様から求めた結果を示しており、Excelの実画面や実測結果ではありません。
TEXTBEFOREでハイフンの前を取り出す基本手順
本記事の対象はMicrosoft 365とExcel 2024で、いずれもMac版を含みます。Excel 2021・2019は対象版の一覧にありません。
対応版と関数の仕様は、2026-10-23時点のMicrosoft公式「TEXTBEFORE 関数」を参照しています。
A2が「SKU-204-Blue」なら、B2へ次の式を入れます。最初のハイフンより前の「SKU」が抽出結果になります。
=TEXTBEFORE(A2,"-")
- A1に「商品コード」、B1に「抽出結果」と入力します。
- A2に「
SKU-204-Blue」と入力します。 - B2に上の基本の式を入力し、Enterキーで確定します。
式のA2は調べるセル、"-" は抽出の目印となる区切り文字です。数式の記号は半角で入力し、ハイフンを半角の二重引用符で囲みます。
目印のハイフン自体と、その後ろの文字は結果に含みません。
式を書くのはB2です。元の商品コードがあるA2へ式を入れて上書きしないようにしてください。

最後のハイフンより前なら =TEXTBEFORE(A2,"-",-1) で「SKU-204」を取り出せます。区切りがない行は、「区切りなし」と表示するか、元の文字列を返すかを選べます。後半で順に紹介します。
2番目・最後のハイフンを選ぶ使い方
ハイフンが複数あるときは、第3引数で「どの区切りまで取り出すか」を指定します。引数とは、関数の括弧内にカンマで区切って並べる設定です。
2番目なら第3引数を2にする
A2の「SKU-204-Blue」から、2番目のハイフンより前を取り出す式です。B2へ入力すると、期待値は「SKU-204」になります。
=TEXTBEFORE(A2,"-",2)
末尾の2は、左から2番目のハイフンを選ぶ指定です。「2文字取り出す」という意味ではありません。
最後なら第3引数を-1にする
最後のハイフンを選ぶなら、B2に次の式を入れます。A2が同じ商品コードなら、期待値は「SKU-204」です。
=TEXTBEFORE(A2,"-",-1)
負の数は末尾側から区切りを探す指定で、-1は最後の区切りを選びます。探す方向は右からでも、返すのは選んだハイフンより前の部分です。
| B2に入れる式 | 選ぶハイフン | A2がSKU-204-Blueのときの期待値 |
|---|---|---|
=TEXTBEFORE(A2,"-") |
最初。第3引数を1にしても同じ | SKU |
=TEXTBEFORE(A2,"-",2) |
左から2番目 | SKU-204 |
=TEXTBEFORE(A2,"-",-1) |
最後 | SKU-204 |
2と-1が同じ結果なのは、この例のハイフンが2個だからです。個数が変わっても「最後」を基準にしたい場合は、2ではなく-1を使います。

区切り文字がない行は、表示を決めておく
A3にハイフンのない「SKU204」と入力します。B3に =TEXTBEFORE(A3,"-") を入力した場合、期待値は「#N/A」です。指定した区切りが見つからないためです。
以下の2例は、B3の式を順に置き換えて比べます。A3の「SKU204」はそのまま残してください。
要確認にするなら「区切りなし」と表示
ハイフンが必要な商品コードで、抜けている行を見つけたいなら、B3へ次の式を入れます。A3が「SKU204」のときの期待値は「区切りなし」です。
=TEXTBEFORE(A3,"-",1,0,0,"区切りなし")
式の後半は、次の順に並んでいます。連続するカンマで省略せず、各設定を明記した例です。
- 第3引数の1:最初の区切りを探す。
- 第4引数の0:大文字・小文字を区別する設定。今回は記号のハイフンが目印なので、そのまま0にする。
- 第5引数の0(match_end):文字列の末尾を区切りとして扱わない。
- 第6引数の「区切りなし」(if_not_found):区切りが見つからないときに返す値。
第6引数は、すべてのエラーを置き換える指定ではありません。区切りが見つからなかった場合の表示を決めます。
区切りがなければ元の文字列を残す
ハイフンのないコードも正しいデータとして扱うなら、B3へ次の式を入れます。A3が「SKU204」のときの期待値は「SKU204」です。
=TEXTBEFORE(A3,"-",1,0,1)
第5引数のmatch_endを1にすると、文字列の末尾も区切りとみなします。この式ではハイフンがなければ末尾までを取り出すため、元の文字列が返ります。
ハイフンが必須のデータでは、この方法だと欠けている行を見落としかねません。その場合は、前の式で「区切りなし」と表示して確認しましょう。
この2つの式の参照をA2に変えれば、A2にはハイフンがあるので、どちらも最初のハイフンより前の「SKU」を返します。

うまく取り出せないときの確認点
#N/A:元データに区切りがあるか確認します。半角の「-」と全角の「-」などを見比べ、迷う場合は元データの区切りをコピーして式と照合します。- 2番目を指定して
#N/A:ハイフンが1個しかない場合など、指定した回数の区切りがないことがあります。 #VALUE!:第3引数に0を指定していないか確認します。最初を選ぶ値は1です。#NAME?:TEXTBEFOREの綴り、区切りを囲む二重引用符、使用中のExcelが対象版かを確認します。
関数名や引用符の誤りを、IFERRORで一律に隠すのは避けましょう。Microsoft公式の#NAME?の対処方法も、構文の問題を直すよう案内しています。
まとめ
最初のハイフンより前なら =TEXTBEFORE(A2,"-")、2番目なら第3引数を2、最後なら-1にします。
区切りがない行は、確認が必要なら第6引数で「区切りなし」と表示し、そのまま使えるデータなら第5引数を1にして元の文字列を残せます。
まずは元データをA列に残してB列に式を入れ、ハイフンがある行とない行の両方で、意図した結果になるか見比べてみてください。
