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 比較表
具体的な文字列で比較してみましょう。
| 文字列 | LEN | LENB | 差分 |
|---|---|---|---|
"ABC" | 3 | 3 | 0 |
"あいう" | 3 | 6 | 3 |
"ABC123" | 6 | 6 | 0 |
"あBC1" | 4 | 5 | 1 |
"東京 Tokyo" | 8 | 10 | 2 |
差分(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バイト)のときだけです。設定手順は以下のとおりです。
- 制限をかけたいセル範囲を選択
- 「データ」タブ →「データの入力規則」をクリック
- 「設定」タブで「入力値の種類」を「ユーザー設定」に変更
- 「数式」欄に
=LEN(A1)*2=LENB(A1)を入力(A1は範囲の先頭セルに合わせる) - 「エラーメッセージ」タブでメッセージを設定
これで全角以外の文字が入力されるとエラーが表示されます。バイト数の上限を設定したい場合は =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のバイト数とは異なる
非推奨とはいえ、バイト数を返す代替関数は存在しません。固定長データの処理やバイト数制限のバリデーションでは、今後も活躍する関数です。必要な場面では積極的に使ってみてください。
