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

スポンサーリンク

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

「この入力フォーム、全角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など、SBCS(1バイト文字セット)環境ではLENと同じ結果になります。この違いについては後ほど「注意点」で詳しく説明しますね。

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

文字数とバイト数の違い

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

つまり、半角だけの文字列ならLENも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の結果を組み合わせると、全角文字数と半角文字数を個別に求められます。

全角文字数を求める式:

=LENB(A1)-LEN(A1)

LENBとLENの差分が全角文字数になります。たとえば「あBC1」なら、LENB=5、LEN=4で、差分「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)でサロゲートペア(絵文字などの特殊文字)に対応したためです。Microsoftとしては、バイト系関数の役割はLENのVersion 2で代替できると判断したわけですね。

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

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

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

非推奨でも役立つ場面

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

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

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

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

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

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

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

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

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

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

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

半角のみかチェック:

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

メールアドレスや商品コードなど、半角のみで入力してほしいフィールドのバリデーションに使えますよ。

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

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

たとえば、全角のみの入力を許可したい場合は次の数式を使います。

=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
RIGHTB=RIGHTB(文字列, バイト数)末尾からバイト数分を抽出RIGHT(Version 2)

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

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

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

先頭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バイトで正しく動きます。

しかし、英語など上記以外の言語がOSの既定言語になっている場合、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の仕様に基づいています。

ここで注意が必要なのは、最近のシステムではUTF-8(ユーティーエフエイト)が主流になっている点です。UTF-8では全角1文字が3バイトとしてカウントされます。つまり、LENBの結果とデータベースのVARCHAR型のバイト消費量が一致しない場合があります。

LENB関数のバイト数がそのまま使えるのは、Shift-JISベースのシステム(全銀フォーマット、レガシーな社内システムなど)です。UTF-8ベースのシステムと連携する場合は注意が必要です。LENBの値をそのまま使うとバイト数が足りなくなる可能性があります。

全角・半角の変換が必要な場合は、ASC関数で全角を半角に、JIS関数で半角を全角に変換できます。LENBと組み合わせてバイト数を調整するときに便利ですよ。

まとめ

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

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

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

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

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