自作図解:A2のSKU-204-Blueから最初のハイフンより前を抽出し、B2の期待値がSKUになる
Tutorials

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,"-")
  1. A1に「商品コード」、B1に「抽出結果」と入力します。
  2. A2に「SKU-204-Blue」と入力します。
  3. B2に上の基本の式を入力し、Enterキーで確定します。

式のA2は調べるセル、"-" は抽出の目印となる区切り文字です。数式の記号は半角で入力し、ハイフンを半角の二重引用符で囲みます。

目印のハイフン自体と、その後ろの文字は結果に含みません。

式を書くのはB2です。元の商品コードがあるA2へ式を入れて上書きしないようにしてください。

自作図解:A2のSKU-204-Blueから最初のハイフンより前を抽出し、B2の期待値がSKUになる
図解1(自作図解・公式仕様に基づく期待値):元データを残したまま、別セルに結果を表示する例。

最後のハイフンより前なら =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を使います。

自作図解:同じ商品コードで最初・2番目・最後のハイフンを選んだ場合の数式と期待値
図解2(自作図解・公式仕様に基づく期待値):第3引数は文字数ではなく、区切りの位置を指定する。

区切り文字がない行は、表示を決めておく

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」を返します。

自作図解:A3がSKU204のとき、既定では#N/A、第6引数の指定で区切りなし、第5引数の指定でSKU204になる期待値
図解3(自作図解・公式仕様に基づく期待値):第6引数は見つからない場合の値、第5引数は末尾を区切りとみなすかの設定。

うまく取り出せないときの確認点

  • #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列に式を入れ、ハイフンがある行とない行の両方で、意図した結果になるか見比べてみてください。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です