ExcelのLENB関数の使い方|バイト数をカウントしてLENと使い分ける方法

スポンサーリンク
  1. LENB関数とは?バイト数を返すExcelの関数
    1. LENB関数の構文と引数
    2. 日本語環境での動作:全角=2バイト・半角=1バイト
  2. LENとLENBの違いを比較表で確認
    1. 文字数とバイト数の違い
    2. LENかLENBか:使い分けの判断基準
    3. LEN vs LENB 比較表
    4. 全角文字数・半角文字数を計算する応用式
  3. LENB関数は非推奨?現状と使い方のスタンス
    1. Microsoft公式の「非推奨」表記の意味
    2. 現時点で使えるか・いつまで使えるか
    3. 非推奨でも役立つ場面
  4. LENB関数の実務活用パターン3選
    1. バイト数制限チェック(固定長データ・フォームバリデーション)
    2. 全角・半角の混在チェック(LENBとLENの差分を活用)
    3. 入力規則でバイト数制限を設定する方法
  5. バイト系関数ファミリー一覧(LEFTB・MIDB・RIGHTB)
    1. 各関数の構文と用途
    2. 固定長フォーマットの分割・抽出パターン
  6. LENB関数を使うときの注意点
    1. SBCS環境(英語OS)ではLENと同じ結果になる
    2. LENBが返すのはShift-JIS換算のバイト数
  7. LENB関数に関するよくある質問(FAQ)
    1. Q1. GoogleスプレッドシートでもExcelと同じように使えますか?
    2. Q2. サロゲートペア文字(絵文字など)のバイト数はどうなりますか?
    3. Q3. 全銀フォーマット以外でLENBが必要になる場面はありますか?
    4. Q4. LENBが非推奨になった後、代替方法はありますか?
    5. Q5. UTF-8のバイト数を正確に計算するにはどうすればいいですか?
  8. まとめ

LENB関数とは?バイト数を返すExcelの関数

LENB関数(読み方:レンビー)は、文字列のバイト数を返すExcel関数です。関数名は「LEN(Length=長さ)+ B(Byte=バイト)」に由来します。

「この入力フォーム、全角20文字以内って言われたけど半角も混ざってる……」。全角と半角が混在するデータのバイト数を調べたい場面、ありますよね。文字数ならLEN関数で一発ですが、バイト数は数えてくれません。そんなときに使えるのがExcelのLENB関数です。LENB関数を使えば、全角を2バイト・半角を1バイトとしてカウントできます。この記事ではLENB関数の基本から、LENとの違い、実務で役立つ活用パターンまで解説します。

LENB関数の構文と引数

=LENB(文字列)
引数必須/省略可説明
文字列必須バイト数を調べたいテキスト、またはセル参照

引数は1つだけ。LEN関数と同じ形なので、覚えやすいですよ。

空のセルや空文字列 "" を渡した場合は「0」を返します。数値を渡すと文字列として扱われ、=LENB(123) は「3」になります。エラー値を渡した場合はそのままエラーが返るので注意してください。

日本語環境での動作:全角=2バイト・半角=1バイト

LENB関数のポイントは、全角文字と半角文字でカウントが変わることです。日本語環境では次のルールで計算されます。

  • 全角文字(ひらがな・カタカナ・漢字など): 1文字=2バイト
  • 半角文字(英数字・半角カナなど): 1文字=1バイト

セルA1に「あいう」と入っているとします。

=LENB(A1)

結果は「6」です。全角3文字×2バイト=6バイトですね。「ABC」の場合は半角3文字×1バイトで「3」になります。

この動作はDBCS(2バイト文字セット)環境の挙動です。日本語・中国語・韓国語がOSの既定言語に設定されている場合に適用されます。英語など上記以外のOSを使っている場合、LENBはLENと同じ動作になります。この違いについては後ほど「注意点」で詳しく説明しますね。

LENとLENBの違いを比較表で確認

文字数とバイト数の違い

LEN関数は文字数を返します。全角でも半角でも1文字は1文字です。一方、LENB関数はバイト数を返します。全角は2バイト、半角は1バイトとカウントされます。

つまり、半角だけの文字列ならLENもLENBも同じ値になります。全角が混ざると、LENBのほうが大きい値を返すわけです。この差を利用すれば、全角文字数や半角文字数も計算できますよ。

LENかLENBか:使い分けの判断基準

LENとLENBのどちらを使うか迷ったときは、次の基準で判断してください。

知りたいこと使う関数
見た目の文字数(画面表示・印刷)LEN関数
システム登録・ファイル出力のバイト数LENB関数
全角/半角の混在チェックLENB関数(LENとの差分を活用)

日常的な文字カウントや表示用の集計にはLEN関数を使います。Shift-JISベースの社内システムへの登録データや、固定長フォーマットのファイル出力ではLENB関数の出番です。バイト数制限がある場合に正確なチェックができます。入力データに全角が混じっていないかチェックしたい場合も、LENB関数が役立ちます。

LEN vs LENB 比較表

具体的な文字列で比較してみましょう。

文字列LENLENB差分
"ABC"330
"あいう"363
"ABC123"660
"あBC1"451
"東京 Tokyo"8102

差分(LENB − LEN)が0なら半角のみ、0より大きければ全角が含まれています。「東京 Tokyo」の場合、全角2文字分の差分「2」が出ていますね。スペースは半角なので、1バイトとしてカウントされていますよ。

全角文字数・半角文字数を計算する応用式

LENBとLENの結果を組み合わせると、全角文字数と半角文字数を個別に求められます。

全角文字数を求める式:

セルA1に計算したい文字列が入っているとします。

=LENB(A1)-LEN(A1)

LENBとLENの差分が全角文字数になります。「あBC1」なら差分「1」が全角文字数です。

半角文字数を求める式:

=LEN(A1)*2-LENB(A1)

LENを2倍した値からLENBを引くと半角文字数になります。「あBC1」なら4×2−5=3が半角文字数です。「B」「C」「1」の3文字ですね。

この計算式は全角・半角の混在チェックでよく使うので、覚えておくと便利ですよ。

LENB関数は非推奨?現状と使い方のスタンス

Microsoft公式の「非推奨」表記の意味

Microsoft公式ドキュメントには「LENB関数は非推奨です。」と明記されています。2025年2月ごろからInsider版ではオートコンプリート候補にも表示されなくなりました。

非推奨になった理由は、LEN関数のVersion 2(互換性バージョン2)にあります。Version 2ではサロゲートペア(絵文字などの特殊文字)に対応しました。Microsoftとしては、バイト系関数の役割はVersion 2で代替できると判断したわけですね。

現時点で使えるか・いつまで使えるか

結論から言うと、現時点では問題なく使えます。オートコンプリートには表示されませんが、セルに直接 =LENB(A1) と入力すれば動作します。DATEDIF関数と同じ「隠れた関数」のような扱いです。

既存のブックに入っているLENB関数が壊れることもありません。過去に作成したファイルもそのまま使い続けられます。ただし、将来のアップデートで完全に削除される可能性はゼロではありません。新規で数式を組む場合はその点を頭に入れておきましょう。

非推奨でも役立つ場面

「非推奨ならもう使わなくていいのでは?」と思うかもしれません。しかし、バイト数を返す代替関数はMicrosoftから公式に提供されていません。

Shift-JIS換算のバイト数を調べたい場面では、LENB関数が唯一の手段です。固定長フォーマットのデータ処理や、バイト数制限のあるシステム連携では引き続きLENBが必要になります。非推奨とはいえ代替が効かない場面がある関数なので、必要なときは積極的に使ってみてください。

LENB関数の実務活用パターン3選

バイト数制限チェック(固定長データ・フォームバリデーション)

社内システムへの登録データに「20バイト以内」のような制限がある場合があります。LENB関数とIF関数を組み合わせてチェックできます。

セルA1に登録したいデータが入っているとします。

=IF(LENB(A1)>20,"超過","OK")

バイト数が20を超えていれば「超過」、以内なら「OK」と表示されます。全角10文字で20バイトなので、全角11文字以上が入ると「超過」になりますね。半角なら20文字まで入力できます。

このようなバイト数チェックが必要になる代表的な場面が、金融機関向けの全銀フォーマットや官公庁の固定長データです。全銀フォーマットでは振込先名義が「半角30バイト以内」と決められています。社内システムでは氏名フィールドが「全角10文字(20バイト)以内」のように制限される場合も多いです。データ作成前にLENBでバイト数を確認しておくと、登録エラーを未然に防げますよ。

場面バイト数制限チェック数式
振込先名義(全銀形式)半角30バイト以内=IF(LENB(A1)>30,"超過","OK")
社内システム氏名登録全角10文字(20バイト)以内=IF(LENB(A1)>20,"超過","OK")

全角・半角の混在チェック(LENBとLENの差分を活用)

入力データが半角のみかどうかを判定したい場面も多いですよね。LENBとLENの値が一致すれば半角のみ、一致しなければ全角が含まれていると分かります。

セルA1に確認したいデータが入っているとします。

全角が含まれているかチェック:

=IF(LENB(A1)>LEN(A1),"全角あり","半角のみ")

半角のみかチェック:

=IF(LEN(A1)=LENB(A1),"半角のみ","全角含む")

半角のみで入力してほしいフィールドのバリデーションに使えます。たとえばメールアドレスは半角英数字・記号のみで構成されます。全角が混じっていると送信エラーの原因になります。=IF(LEN(A1)=LENB(A1),"OK","全角含む") で事前にチェックできますよ。社員コードや商品コードなど、半角英数のみを許容するフィールドにも同じ考え方で使えます。

入力規則でバイト数制限を設定する方法

Excelの「データの入力規則」機能と組み合わせると、バイト数制限をセルに直接設定できます。

全角のみの入力を許可したい場合は次の数式を使います。制限をかけたいセル範囲の先頭セルをA1とします。

=LEN(A1)*2=LENB(A1)

この数式がTRUEを返すのは、すべての文字が全角(1文字=2バイト)のときだけです。設定手順は以下のとおりです。

  1. 制限をかけたいセル範囲を選択
  2. 「データ」タブ →「データの入力規則」をクリック
  3. 「設定」タブで「入力値の種類」を「ユーザー設定」に変更
  4. 「数式」欄に =LEN(A1)*2=LENB(A1) を入力(A1は範囲の先頭セルに合わせる)
  5. 「エラーメッセージ」タブでメッセージを設定

全角以外の文字が入力されるとエラーが表示されます。バイト数の上限を設定したい場合は =LENB(A1)<=20 のような数式に変えてみてください。

バイト系関数ファミリー一覧(LEFTB・MIDB・RIGHTB)

各関数の構文と用途

LENB関数と同じくバイト単位で動作する関数が3つあります。いずれもMicrosoft公式で非推奨と明記されていますが、LENB同様に直接入力すれば使えます。

関数構文用途非推奨後の代替
LEFTB=LEFTB(文字列, バイト数)先頭からバイト数分を抽出LEFT関数(Version 2)
MIDB=MIDB(文字列, 開始位置, バイト数)指定位置からバイト数分を抽出MID(Version 2)
RIGHTB=RIGHTB(文字列, バイト数)末尾からバイト数分を抽出RIGHT(Version 2)

LEFT / MID / RIGHT が「文字数」で区切るのに対し、LEFTB / MIDB / RIGHTB は「バイト数」で区切ります。固定長フォーマットのデータを扱うときに欠かせない関数ファミリーですよ。

固定長フォーマットの分割・抽出パターン

銀行の全銀フォーマットや官公庁の固定長データを扱う場面で活躍します。「先頭10バイトが名前、次の5バイトがコード」のように、位置とバイト数が決まった構造のデータを分割するときに便利ですよ。

セルA1に固定長の文字列が入っているとします。

先頭10バイトを取り出す:

=LEFTB(A1,10)

11バイト目から5バイト分を抽出する:

=MIDB(A1,11,5)

末尾4バイトを取り出す:

=RIGHTB(A1,4)

LENB関数でまず全体のバイト数を確認します。そのあとLEFTB・MIDB・RIGHTBで区切るという流れが定番パターンです。固定長データを扱うことがあれば、セットで覚えておくと便利ですよ。

LENB関数を使うときの注意点

SBCS環境(英語OS)ではLENと同じ結果になる

LENB関数の動作はOSの既定言語に依存します。日本語・中国語・韓国語がOSの既定言語なら、全角=2バイト・半角=1バイトで正しく動きます。

しかし、英語など上記以外の言語が既定の場合、LENBはLENと同じ動作になります。=LENB("あ") が「2」ではなく「1」を返してしまうのです。

この動作はExcelの言語設定ではなく、OSの既定言語で決まります。Windowsの場合は「地域と言語」の管理用言語が該当します。海外拠点のPCで日本語データを扱う場合に起こりやすいトラブルです。英語版WindowsにExcelだけ日本語で入れている場合も同様です。LENB関数が期待どおりの値を返さないときは、OSの言語設定を確認してみてください。

LENBが返すのはShift-JIS換算のバイト数

LENB関数が返すバイト数は、Shift-JIS(シフトジス)という文字コード換算の値です。全角1文字=2バイト、半角1文字=1バイトというルールはShift-JISの仕様に基づいています。

覚えておきたいのが、システムによって使われる文字コードが異なる点です。

文字種Shift-JIS(LENBの換算)UTF-8(最近のシステム)
半角英数(A, 1 など)1バイト1バイト
半角カナ(ア, イ など)1バイト3バイト
ひらがな・漢字(あ, 東 など)2バイト3バイト

LENBはあくまでShift-JIS換算のバイト数を返します。UTF-8では「東京」が6バイトですが、LENBは4バイトと返します。UTF-8ベースのシステムにデータを登録する際は注意が必要です。LENBの値をそのまま使うと、実際のバイト消費量と差が生じます。

Shift-JISベースのシステム(全銀フォーマット・レガシーな社内システムなど)なら、LENBの値をそのまま活用できます。新しいWebシステムやクラウドDBはUTF-8が多いので、LENBの値だけで判断しないよう注意してください。

全角・半角の変換が必要な場合は、ASC関数で全角を半角に変換できます。半角を全角にしたい場合はJIS関数を使います。変換後にLENBでバイト数を確認すると、より正確なチェックができますよ。

LENB関数に関するよくある質問(FAQ)

LENB関数を使っていると引っかかりやすいポイントを、質問形式でまとめました。実務でつまずきやすい疑問を解消しておきましょう。

Q1. GoogleスプレッドシートでもExcelと同じように使えますか?

GoogleスプレッドシートにもLENB関数があり、基本の使い方はExcelとほぼ同じです。=LENB(A1) の形で、全角2バイト・半角1バイトとしてカウントできます。

ただし、内部的な動作には違いがあります。Excelの場合はOSの既定言語に依存しますが、スプレッドシートはOSの言語設定に左右されません。海外拠点のPCでも日本語データを安定してカウントできるのは、スプレッドシートのメリットですね。

なお、スプレッドシートのLENBはUTF-16ベースで動作するため、同じ文字列でもExcelと値が食い違うケースがあります。Excelで作った数式をそのまま移植するときは、念のため実際の値を見比べておくと安心です。詳しい動作はスプレッドシートのLENB関数の記事で解説しています。

Q2. サロゲートペア文字(絵文字など)のバイト数はどうなりますか?

絵文字や一部の特殊文字は「サロゲートペア」と呼ばれ、内部的に2つのコード単位で表現されます。LENB関数にこうした文字を渡すと、想定外の値が返ることがあるので注意してください。

たとえば絵文字を1個含む文字列をLENで数えると「2」と返る場合があります。サロゲートペアが2文字分としてカウントされるためです。LENBの結果も同様に、見た目の印象とずれます。Shift-JISには絵文字の概念がそもそもないので、バイト数の換算も実態と合いません。

絵文字を含むデータのバイト数をきちんと管理したいなら、LENBではなく文字コードを直接確認できるUNICODE関数を使うのがおすすめです。そもそも基幹システムに流すデータには絵文字を入れないのが無難ですよ。

Q3. 全銀フォーマット以外でLENBが必要になる場面はありますか?

全銀フォーマット以外にも、Shift-JIS換算のバイト数が求められる場面は意外とあります。代表的なものを挙げておきますね。

  • レガシーな社内基幹システムへのCSV取り込み(摘要欄や品名欄がバイト数制限)
  • 官公庁向けの届出データ(固定長テキストファイル)
  • POSレジや受発注EDIなど、Shift-JIS前提の業務システム連携
  • 印刷帳票のレイアウト調整(半角・全角混在の桁ぞろえ)

これらはどれも「半角nバイト以内」のような制約があり、LENBで事前チェックすると登録エラーを防げます。「文字数では収まるのにバイト数だと超える」というトラブルは、全角が多い日本語データで頻繁に起こりますよ。

Q4. LENBが非推奨になった後、代替方法はありますか?

Microsoftは非推奨の理由としてLEN関数のVersion 2を挙げています。ただ、これはサロゲートペアの数え方の改善であって、Shift-JIS換算のバイト数を返す機能ではありません。つまり、現時点でLENBを完全に置き換える純正の代替関数はないというのが実情です。

どうしても非推奨関数を避けたい場合は、次のような方法が考えられます。

=SUMPRODUCT(LEN(A1)+LEN(SUBSTITUTE(A1,MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"")=FALSE))

ただ、この手の自前計算式は複雑で保守しづらく、半角カナの扱いなどで誤差も出やすいです。実務では、現状そのまま動くLENB・LEFTBMIDBRIGHTBを使い続けるほうが現実的ですよ。削除されたタイミングで改めて対応を考えれば十分です。

Q5. UTF-8のバイト数を正確に計算するにはどうすればいいですか?

LENBはShift-JIS換算なので、UTF-8ベースのシステムに登録するデータでは値がずれます。UTF-8では半角英数が1バイト、半角カナが3バイト、ひらがな・漢字が3バイトと、Shift-JISとはルールが異なるためです。

UTF-8のバイト数を厳密に求めたい場合、Excelの標準関数だけでは少し工夫が必要です。文字種ごとにバイト数を割り当てて合算するか、UTF-8変換に対応したマクロ(VBAのStrConvやADODB.Streamを使う方法)を組むのが確実です。簡易チェックなら「漢字・ひらがな・全角記号は3バイト、半角は1バイト」と仮置きして集計する方法もあります。

なお、CSVをUTF-8で保存・読み込みする際の文字化け対策については、Excelの文字化け対処法の記事も参考になりますよ。バイト数の前に、まず正しい文字コードで保存できているか確認しておきましょう。

まとめ

LENB関数は、文字列のバイト数を返すExcelの関数です。日本語環境では全角=2バイト、半角=1バイトとしてカウントされます。

ポイントを整理すると次のとおりです。

  • 構文は =LENB(文字列) で、引数は1つだけ
  • LEN関数が文字数を返すのに対し、LENBはバイト数を返す
  • 「見た目の文字数」はLEN関数、「システム登録・ファイル出力のバイト数」はLENB関数を使う
  • =LENB(A1)-LEN(A1) で全角文字数を計算できる
  • =LEN(A1)*2-LENB(A1) で半角文字数を計算できる
  • Microsoft公式では非推奨だが、直接入力すれば現在も使える
  • 全銀フォーマットや社内システムのバイト数制限チェック・全角半角の混在チェックに活用できる
  • LEFT関数のバイト版(LEFTB・MIDB・RIGHTB)と組み合わせて固定長データの分割にも使える
  • 英語OSではLENと同じ動作になるので、OSの既定言語に注意
  • 返すのはShift-JIS換算のバイト数で、UTF-8のバイト数とは異なる

非推奨とはいえ、バイト数を返す代替関数は存在しません。固定長データの処理やバイト数制限のバリデーションでは、今後も活躍する関数です。必要な場面では積極的に使ってみてください。

文字列操作に関連する関数もあわせて確認したい場合は、LEN関数LEFT関数MIDB関数が参考になります。全角・半角を変換してからバイト数を調べたい場合は、ASC関数JIS関数も合わせて確認してみましょう。

タイトルとURLをコピーしました