ExcelのLEFTB関数の使い方|左からバイト数で文字を抽出する
「LEFT関数なら知っているけれど、LEFTB関数って何が違うの?」と感じたことはありませんか。文字数ではなく バイト数 で先頭を取り出す LEFTB 関数は、半角と全角が混ざった文字列を扱うときに役立ちます。固定長フォーマットや全銀レコード、商品コードの先頭抽出など、業務の現場では意外と出番の多い関数なんですよ。
この記事では、ExcelのLEFTB関数の構文・LEFT関数との違い・実務での使い分けを、サンプルデータを交えて紹介します。LENB関数との組み合わせや、よくあるエラーの対処法もまとめているので、最後まで読めば LEFTB を自信を持って使えるようになりますよ。
ExcelのLEFTB関数とは?基本構文と動作
ExcelのLEFTB関数は、文字列の先頭から 指定したバイト数分 の文字を取り出す関数です。LEFT関数が「文字数」で取り出すのに対し、LEFTBは「バイト数」で取り出す点が大きな違いです。
構文
=LEFTB(文字列, バイト数)
| 引数 | 必須/省略 | 説明 |
|---|---|---|
| 文字列 | 必須 | 抽出元の文字列、または文字列を返すセル参照 |
| バイト数 | 省略可 | 取り出すバイト数(整数)。省略時は1バイト |
バイト換算ルール
LEFTB関数を使うときは、文字種ごとのバイト数を押さえておきましょう。
| 文字種 | バイト数 |
|---|---|
| 半角英数字(A〜Z、0〜9) | 1バイト |
| 半角カタカナ(ア〜ン) | 1バイト |
| 半角記号(!、?、@など) | 1バイト |
| 全角ひらがな・カタカナ | 2バイト |
| 漢字 | 2バイト |
| 全角記号・全角英数字 | 2バイト |
ざっくりと「半角=1バイト、全角=2バイト」と覚えておけば、日常業務ではほぼ困りません。
TIP: LEFTB関数は、日本語のような 2バイト文字セット(DBCS)言語 を使う環境で意味を持つ関数です。Microsoftの公式ドキュメントによると、英語版Excelなど DBCS 非対応の環境では LEFT関数と同じ挙動になります。日本語版Excelを使っている方は安心して使ってくださいね。
LEFT関数とLEFTB関数の違い
LEFT関数とLEFTB関数の違いは、たった1行の比較で一目瞭然です。同じ文字列「Excel入門」(半角5文字+全角2文字、合計9バイト)で結果を比べてみましょう。
| 数式 | 結果 | 説明 |
|---|---|---|
=LEFT("Excel入門", 5) | “Excel” | 先頭5 文字 を取得 |
=LEFTB("Excel入門", 5) | “Excel” | 先頭5 バイト を取得(半角5文字) |
=LEFT("Excel入門", 6) | “Excel入” | 先頭6文字を取得 |
=LEFTB("Excel入門", 6) | “Excel” + 半角スペース | 先頭6バイト(”入”が半端で切れる) |
=LEFTB("Excel入門", 7) | “Excel入” | 先頭7バイト(半角5+全角1=7) |
ポイントは、全角文字の途中で切れる指定をしたときの挙動です。Excelは 半端な1バイトを破棄して半角スペースで埋める 動きをします。文字化けは起きない代わりに「予期しないスペースが混入する」ので、バイト数の指定には注意が必要ですよ。
使い分けの判断基準
「文字数で扱うべきか、バイト数で扱うべきか」は次の基準で判断するとシンプルです。
| 用途 | 使う関数 |
|---|---|
| 文字数(見た目の文字の個数)で抽出したい | LEFT |
| バイト数(半角=1、全角=2)で抽出したい | LEFTB |
| 固定長レコード・全銀フォーマットなどシステム連携 | LEFTB |
| 表示や見出しの整形 | LEFT |
「人が見る文字数」ならLEFT、「システムが扱うバイト数」ならLEFTB、と覚えておくと迷いませんよ。
ExcelのLEFTB関数の基本的な使い方
実際にLEFTB関数を使ってみましょう。次のサンプルデータを使って、いくつかのパターンを試します。
| セル | 内容 |
|---|---|
| A2 | “Microsoft” |
| A3 | “東京都新宿区” |
| A4 | “Excel関数” |
| A5 | “アイウエオabc” |
例1: 半角文字列の先頭抽出
=LEFTB(A2, 5)
A2が”Microsoft”(半角9バイト)なので、結果は “Micro” になります。半角だけの場合は LEFT(A2, 5) と同じ結果になりますね。
例2: 全角文字列の先頭抽出
=LEFTB(A3, 6)
A3が”東京都新宿区”(全角6文字=12バイト)なので、結果は “東京都” になります。6バイト=全角3文字分を取り出した形です。
例3: 半角全角混在の文字列
=LEFTB(A4, 7)
A4が”Excel関数”(半角5+全角2=9バイト)なので、結果は “Excel関” になります。半角5バイト+全角1文字(2バイト)=7バイトを取り出した形ですね。
例4: 半角カタカナの扱い
=LEFTB(A5, 5)
A5が”アイウエオabc”(半角カナ5+半角英3=8バイト)なので、結果は “アイウエオ” になります。半角カタカナは1バイト扱いなので、5バイトでちょうど5文字分が取れますよ。
NOTE: 第2引数を省略すると
LEFTB(A2)のように1バイトだけ取得します。バイト数は必ず明示的に指定するのが安全です。
実務での活用シーン3選
LEFTB関数が真価を発揮するのは、システム連携や固定長データの処理です。代表的な3つのシーンを見ていきましょう。
シーン1: 固定長CSVのフィールド分解
レガシー基幹システムから出力される固定長CSVは、フィールドが「先頭何バイト〜何バイト」と決まっています。たとえば次のようなレコードを想像してください。
JP0123東京支店12345678
このレコードの構造は「先頭2バイト=国コード、3〜6バイト=店舗コード、7バイト〜=支店名」と決まっているとします。LEFTBで先頭の国コードを切り出すには、次の数式を使います。
=LEFTB(A2, 2)
→ "JP"
LEFT関数を使うと「先頭2文字」になり、もし全角文字が混ざると意図とずれてしまいます。バイト固定の仕様に対しては、LEFTBが正解ですよ。
シーン2: 全銀フォーマットの識別子抽出
全国銀行協会(全銀協)のフォーマットは、各レコードの先頭1バイトが「データ区分」と決まっています。1=ヘッダー、2=データ、8=トレーラー、9=エンドという仕様です。
=LEFTB(A2, 1)
→ "1"(ヘッダーレコードの場合)
このバイト単位の仕様は、文字数ではなくバイト数で考えるのが自然です。LEFTBで先頭1バイトを取り出し、IF関数で分岐させればレコード種別ごとに処理を分けられますよ。
シーン3: 半角全角混在の商品コード処理
「半角6バイトの管理コード+全角の商品名」という形式のデータを想像してください。
| セル | 値 |
|---|---|
| A2 | “ABC001ノートパソコン” |
| A3 | “XY-203デスクトップPC” |
先頭6バイト(=半角6文字)の管理コードを抽出するには、次の数式を使います。
=LEFTB(A2, 6)
→ "ABC001"
LEFT関数を使った =LEFT(A2, 6) でも結果は同じですが、もしデータに 全角コード が混ざっていた場合の挙動は変わります。LEFTBなら「先頭6バイト=全角3文字」として処理されるので、システム仕様に合った動作になりますよ。
LENB関数との組み合わせ
LEFTB関数と相性が良いのが、文字列のバイト数を返すLENB関数(バイト単位で文字列の長さを返す関数)です。組み合わせることで、より柔軟なバイト処理ができます。
LENBとLEFTBで「半分のバイト数」を抽出
=LEFTB(A2, LENB(A2)/2)
文字列のちょうど半分のバイト数を取り出す数式です。固定の数値ではなく、データ長に応じて動的にバイト数を決められますよ。
バイト数で条件分岐
=IF(LENB(A2)>20, LEFTB(A2,20)&"...", A2)
文字列のバイト数が20を超えたら先頭20バイト+「…」を表示し、20以下ならそのまま表示する数式です。システムのフィールド長制限(例: 表示は20バイトまで)を扱うときに便利ですよ。
全角文字数を逆算する
LENとLENBを組み合わせると、半角・全角の文字数を逆算できます。
| 数式 | 意味 |
|---|---|
=LENB(A2)-LEN(A2) | 全角文字の数(全角は2バイト、半角は1バイトなので差分が全角数) |
=LEN(A2)*2-LENB(A2) | 半角文字の数 |
これを応用すれば「全角だけを取り出すための適切なバイト数」を計算してLEFTBに渡せます。
LEFTB関数を使うときの注意点
LEFTB関数は便利な一方で、いくつか押さえておきたいクセがあります。
注意点1: 全角文字の途中で切ると半角スペースが混入する
全角文字を奇数バイトで切ろうとしたときの挙動には注意が必要です。Excelは半端な1バイトを破棄し、代わりに半角スペースを埋め込みます。
=LEFTB("あいう", 3)
→ "あ "("あ"の後に半角スペース)
そのため、LEFTBの結果をそのまま別のシステムに連携すると、 意図しないスペース混入 が起きることがあります。後段でTRIM関数を挟むか、バイト数指定を必ず偶数(または全角文字の境界)に揃える運用を徹底するのが安全ですよ。
注意点2: 環境依存(DBCS非対応環境では LEFT と同じ動作)
LEFTB関数は DBCS言語(日本語・中国語・韓国語)対応の環境 でのみ意味のある動作をします。英語版Excelやマシンの言語設定が英語の場合、LEFTB はLEFT関数と同じく文字数ベースで動作します。
複数の環境でファイルを共有する場合は、LEFTBの代わりにLEFTを使うか、両方の環境でテストするのがおすすめです。
注意点3: 半角カナと全角カナの混同
半角カタカナ(アイウエオ)は 1バイト ですが、見た目で全角カナ(アイウエオ)と混同しやすい文字種です。意図せず半角カナが混入していると、LEFTBの結果が予測と違うことがあります。
確認するには、LEN(A2)とLENB(A2)を比較するのが手軽です。LEN=LENBなら全部半角、LENBがLENの倍なら全部全角、と一目で判別できますよ。
注意点4: 絵文字・サロゲートペア
絵文字や一部の特殊文字(Unicode拡張領域)は3〜4バイト相当で扱われることがあります。最近の絵文字混在データを処理するときは、事前にテストデータで挙動を確認しましょう。
よくあるエラーと対処法
LEFTB関数で遭遇しやすいエラーと対処法をまとめました。
#VALUE! エラー
原因と対処法:
| 原因 | 対処法 |
|---|---|
| 第2引数が負の数 | バイト数は0以上の整数で指定する。MAX(0, 数式) でクランプ可能 |
| 第2引数が文字列で数値変換不可 | 数値またはVALUE関数で変換した値を渡す |
| セル参照先がエラー値 | IFERROR関数で囲む =IFERROR(LEFTB(A2,5),"") |
結果が空文字 “”(エラーは出ないが期待と違う)
原因と対処法:
| 原因 | 対処法 |
|---|---|
| 第2引数が0 | バイト数を1以上に変更する |
| 第1引数が空セル | IF関数で空チェック =IF(A2="","",LEFTB(A2,5)) |
結果に半角スペースが混じる
原因と対処法: 全角文字の途中で切れた場合に発生します。バイト数指定を見直すか、TRIM関数で末尾スペースを除去します。
=TRIM(LEFTB(A2, 5))
#NAME? エラー
原因: 関数名のスペルミス(LEFTBをLEFTやLEFBと書いていないか確認)。LEFTB関数は標準のExcel関数なので、関数名さえ正しければエラーにはなりません。
まとめ
ExcelのLEFTB関数は、文字列の先頭から バイト数指定 で文字を抽出する関数です。LEFT関数との違いと使い分けの要点をまとめると次のとおりです。
| 観点 | LEFT関数 | LEFTB関数 |
|---|---|---|
| 抽出単位 | 文字数 | バイト数 |
| 全角文字の扱い | 1文字 | 2バイト |
| 主な用途 | 表示・見出し整形 | 固定長レコード・システム連携 |
| 環境依存 | なし | DBCS言語環境で意味あり |
実務での主な活用シーンは次の3つでした。
- 固定長CSVのフィールド分解 — 国コード・店舗コードの先頭抽出
- 全銀フォーマットの識別子抽出 — レコード区分の1バイト判定
- 半角全角混在の商品コード処理 — 管理コードと商品名の分離
LENB関数と組み合わせれば、文字列のバイト数を動的に判定して条件分岐する処理も組めます。半角と全角が混ざるデータを扱う方は、LEFT・LEFTB・LEN・LENBの4つをセットで覚えておくと、業務がぐっと楽になりますよ。
関連する文字列操作の関数も合わせてチェックしてみてくださいね。
