LEFTは、文字列の先頭から、指定した文字数だけ取り出す関数です。
「商品コードの先頭3文字が分類コード」といった、位置が決まっているデータの切り出しに使います。ExcelとGoogleスプレッドシートで共通です。
書式
=LEFT(文字列, [文字数])
文字数を省略すると1文字だけ返します。
基本の使い方
A1に ABC-1234 が入っているとします。
=LEFT(A1, 3) → ABC
文字数が決まっていないとき
実務ではこちらのほうが多くなります。区切り文字の位置を FIND で求めて、その手前までを取り出します。
=LEFT(A1, FIND("-", A1) - 1)
FIND("-", A1) は「-」が4文字目にあることを返すので、-1 して3文字を取り出しています。
区切り文字が無いと #VALUE! になります。 対処は IFERROR で包むか、FIND の結果を確認してから使います。
=IFERROR(LEFT(A1, FIND("-", A1) - 1), A1)
区切りが無ければ元の文字列をそのまま返す、という書き方です。
大文字小文字を区別しない検索
FIND は大文字小文字を区別します。区別したくないなら SEARCH を使ってください。
=LEFT(A1, SEARCH("x", A1) - 1)
SEARCH はワイルドカード(* ?)も使えます。
全角・半角の数え方
LEFTは全角も半角も1文字として数えます。
=LEFT("東京都", 2) → 東京
バイト単位で数えたい場合は LEFTB を使います。ただし実務でバイト数が必要な場面は限られます(固定長のシステム連携など)。
日付に使うと数字になる
日付セルにLEFTを使うと、内部のシリアル値の先頭が返ります。
=LEFT(A1, 4) → 4611 (2026/4/1 のシリアル値の先頭4桁)
日付から年を取り出したいなら TEXT か YEAR を使ってください。
=TEXT(A1, "yyyy") → 2026
=YEAR(A1) → 2026
LEFTは文字列専用の関数だと考えてください。
数値に使うと文字列になる
LEFTの結果は常に文字列です。計算に使うなら VALUE で戻します。
=VALUE(LEFT(A1, 3))
全行に適用する
ARRAYFORMULA で包みます。
=ARRAYFORMULA(IF(A2:A="", "", LEFT(A2:A, 3)))
SPLITやREGEXEXTRACTとの使い分け
| やりたいこと | 使う関数 |
|---|---|
| 位置が固定 | LEFT |
| 区切り文字で分ける | SPLIT |
| パターンで取り出す | REGEXEXTRACT |
区切り文字が複数あったり、パターンが複雑なら REGEXEXTRACT のほうが素直に書けます。
=REGEXEXTRACT(A1, "^([^-]+)")
「最初の - までを取り出す」という意味です。FIND を使った書き方より短く、区切りが無くてもエラーになりません。
エラーの対処
#VALUE! が出る
- –
FINDが対象を見つけられていない - – 文字数にマイナスを指定している(
FIND(...) - 1が0未満になった)
IFERROR で包むか、FIND 単体の結果を確認してください。
想定と違う位置で切れる
対象に見えない文字(改行・全角スペース・タブ)が含まれている可能性があります。LEN() で文字数を確認すると分かります。
=LEN(A1)
見た目の文字数と合わなければ、不可視文字が入っています。TRIM や CLEAN で整えてください。
まとめ
- – 書式は
=LEFT(文字列, 文字数) - – 文字数が可変なら
FINDと組み合わせる - – 区切りが無い場合に備えて IFERROR で包む
- – 全角も半角も1文字として数える
- – 日付に使うとシリアル値が返る。TEXT を使うこと
- – パターンが複雑なら REGEXEXTRACT のほうが短い
関連する関数
- – RIGHT — 末尾から取り出す
- – MID — 途中から取り出す
- – SPLIT — 区切り文字で分割する
- – REGEXEXTRACT — 正規表現で取り出す
- – 関数一覧に戻る
コメントを残す