スプレッドシートで文字列を扱っていると、「このデータのバイト数を知りたい」という場面にぶつかることがありますよね。基幹システムに流し込むCSVで「摘要欄は40バイトまで」と指定されることもあります。入力フォームで半角40バイト・全角20文字の制約がかかることも多いですよね。文字数なら数えられても、バイト数はパッと出てこない方が多いのではないでしょうか。
そんなときに活躍するのが、スプレッドシートのLENB関数です。全角2バイト・半角1バイトでカウントしてくれます。半角と全角が混ざっている文字列でも、正確にバイト数が測れますよ。
この記事では、スプレッドシートのLENB関数の基本構文から、LEN関数との違い、LEFTBやMIDBとの組み合わせまで紹介します。実務でよく使うバイト数チェックのテンプレートも用意しました。コピペで使える超過チェック用の4行テンプレートも置いておくので、そのまま貼って活用してくださいね。
スプレッドシートのLENB関数とは?バイト数を返す関数
スプレッドシートのLENB関数は、文字列のバイト数を返す関数です。読み方は「レンビー」と読みます。LEN(Length=長さ)とB(Byte=バイト)を組み合わせた名前ですよ。
日本語環境では、全角文字を2バイト、半角文字を1バイトとしてカウントします。全角半角が混ざった商品名や住所、摘要欄のテキストなどを、バイト単位で管理したいときに使える関数ですよ。
LENB関数の構文と引数
LENB関数の構文はとてもシンプルです。引数は1つだけなので、覚えるのも楽ですよ。
=LENB(文字列)
引数の意味を整理しておきましょう。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 文字列 | 必須 | バイト数を調べたいテキスト、またはセル参照 |
空のセルや空文字列 "" を渡すと、結果は 0 になります。数値を渡した場合は文字列として扱われ、桁数がそのままバイト数になりますよ。たとえば =LENB(123) の結果は 3 です。エラー値(#N/A や #VALUE! など)を渡すと、そのエラーがそのまま返ってくるので注意してくださいね。
全角=2バイト・半角=1バイトのルール
LENB関数のカウントルールは、日本語環境だと次のようになっています。
- 全角文字(ひらがな・カタカナ・漢字・全角英数字・全角記号): 1文字=2バイト
- 半角文字(英数字・半角カタカナ・半角記号): 1文字=1バイト
意外と見落としがちなのが、半角カタカナは1バイトという点です。JIS X 0201(半角カナを定義するASCII拡張の文字コード規格)で定義されているため、全角カタカナ(2バイト)とはカウントが違いますよ。また、全角スペースや全角記号も2バイト、改行コード(CHAR(10))は1バイトとしてカウントされます。
LEN関数とLENB関数の違い
LENB関数とLEN関数は似ていますが、数える単位が違うだけです。ここを押さえておくと、使い分けで迷わなくなりますよ。
文字数とバイト数の違いを整理
基本の違いを表にまとめました。
| 関数 | 数える単位 | 全角の扱い | 半角の扱い |
|---|---|---|---|
| LEN | 文字数 | 1文字 | 1文字 |
| LENB | バイト数 | 2バイト | 1バイト |
実際に同じ文字列で結果を比べてみましょう。
| 文字列 | =LEN(A2) | =LENB(A2) |
|---|---|---|
| “あいうえお” | 5 | 10 |
| “ABCDE” | 5 | 5 |
| “Excel関数” | 7 | 9 |
| “商品A-100” | 7 | 10 |
全角だけ、半角だけなら違いは出にくいです。でも混在するとLENB関数のほうが大きくなります。バイト数制限のあるシステムで使うのは、当然LENBのほうですよ。
LEN関数の基本を押さえたい方は、スプレッドシートのLEN関数の使い方もあわせてチェックしてみてくださいね。
LENB-LENで全角文字数を数えるテクニック
ここでちょっと便利なワザを紹介しますね。LENBからLENを引くと、「全角文字だけの個数」が取得できます。
=LENB(A2) - LEN(A2)
全角文字は2バイトで1文字、半角文字は1バイトで1文字です。差分を取ると「全角文字のぶんだけ+1されている」という仕組みなんですよ。
| 文字列 | LENB-LEN | 意味 |
|---|---|---|
| “あいうえお” | 5 | 全角5文字 |
| “ABCDE” | 0 | 全角0文字 |
| “Excel関数” | 2 | 全角2文字(関・数) |
「データの中に全角文字が混ざっていないかチェックしたい」という場面で便利に使えますよ。たとえば半角英数字のみ入力すべきコード列に全角が紛れていないか、LENB-LEN が 0 以外の行を抽出すれば一発で見つかります。
スプレッドシートのLENB関数の基本的な使い方
それではLENB関数を実際に使ってみましょう。いくつかのケースで挙動を確認しておくと、実務で迷わなくなりますよ。
全角・半角が混在する文字列での挙動
代表的なパターンを並べてみますね。
| 数式 | 結果 | 内訳 |
|---|---|---|
=LENB("あいうえお") | 10 | 全角5文字×2バイト |
=LENB("ABCDE") | 5 | 半角5文字×1バイト |
=LENB("商品A-100") | 10 | 全角2(商品)+ 半角5(A-100) |
=LENB("アイウエオ") | 5 | 半角カナ5文字×1バイト |
半角カナが1バイトあつかいなのは、慣れるまで少し意外に感じるかもしれません。でも、基幹システムなどで半角カナを使うレイアウトなら、この仕様のおかげでバイト数がコンパクトになりますよ。
空白・改行・記号のカウント
空白や改行、記号のカウントも押さえておきましょう。
| 数式 | 結果 | 補足 |
|---|---|---|
=LENB(" ") | 1 | 半角スペースは1バイト |
=LENB(" ") | 2 | 全角スペースは2バイト |
=LENB(CHAR(10)) | 1 | 改行は1バイト |
=LENB("") | 0 | 空文字列は0 |
=LENB("!?") | 4 | 全角記号は2バイト |
基幹システム向けのCSVで「改行コードも含めてバイト数カウントしたい」という場合にも便利です。CHAR(10)ぶんの1バイトも含まれているので、そのまま使えますよ。
LEFTB・RIGHTB・MIDBとの組み合わせパターン
LENB関数は単体でも便利ですが、バイト系の切り出し関数と組み合わせるとさらに活躍します。LEFTB・RIGHTB・MIDBは、それぞれ左・右・任意位置からバイト単位で切り出す関数ですよ。実務での頻出パターンを2つ紹介しますね。
LENBで超過検出→LEFTBでトリミング
一番よく使うのがこのパターンです。A列に文字列、B列に上限バイト数を入れている想定で、C列に「判定結果+自動トリミング」を表示します。
=IF(LENB(A2)>B2, LEFTB(A2,B2), A2)
この1本で、上限を超えている行だけ左から上限ぶん切り出せます。セーフな行はそのまま残してくれますよ。データ量が多いシートでも、列挿入1本で整形できるので作業時間がぐっと短くなります。
さらに「超過した旨を表示してから切る」なら、こんな書き方もできます。
=IF(LENB(A2)>B2, LEFTB(A2,B2)&"★", A2)
★マーク付きにしておくと、あとで目視確認したい行がすぐ見つかりますよ。詳しい使い方はスプレッドシートのLEFTB関数の使い方も参考にしてみてくださいね。
固定長レイアウトの確認に使う
古い基幹システムから落とした固定長ファイルを扱うときも、LENBは頼りになります。たとえば「先頭8バイトが顧客コード、次の20バイトが氏名」というレイアウトがあるとしますね。データ全体の長さを事前に確認したい場面で重宝します。
全体のバイト数: =LENB(A2)
氏名フィールド: =MIDB(A2, 9, 20)
末尾フィールド: =RIGHTB(A2, 10)
レイアウト定義書に書かれた想定バイト数(例: 合計128バイト)と、LENBの結果が一致しているか確認しておきましょう。あとで切り出したときのズレに気付けますよ。MIDBやRIGHTBの詳しい使い方はスプレッドシートのMIDB関数の使い方とスプレッドシートのRIGHTB関数の使い方もあわせてチェックしてみてください。
実務で使えるバイト数チェックの活用例
LENB関数を使いこなせると、事務作業のいろんな場面で時短につながります。よく使う3つの活用例を紹介しますね。
基幹システム連携のCSV整形
会計ソフトや販売管理システムへの取り込み用CSVで、「摘要欄は40バイトまで」といった制限はよく出てきます。事前にLENBでチェックしておくと、取り込みエラーを防げますよ。
=IF(LENB(A2)>40, "超過", "OK")
件数が多いときは、フィルタで「超過」だけ抽出すれば、対応が必要な行がすぐ見つかります。上長に「◯件を修正してから送ります」と報告できるので、やり取りもスムーズですよ。
入力フォームのバイト数バリデーション
Googleフォームや自作の入力シートで、「このフィールドは半角40バイト・全角20文字以内」というルールを設けたい場合にも使えます。条件付き書式と組み合わせると、超過した行を自動で赤くできますよ。
条件付き書式の「カスタム数式」にこう入れます。
=LENB($A2)>40
A列の文字列が40バイトを超えると、行がハイライトされます。入力者に視覚的に伝わるので、修正漏れが減りますよ。
コピペで使えるテンプレート
よく使う組み合わせを一式テンプレートにしました。そのまま貼って使ってくださいね。A2にデータ、B2に上限バイト数という前提です。
現在のバイト数: =LENB(A2)
超過チェック: =IF(LENB(A2)>B2, "超過 ("&LENB(A2)&"B)", "OK")
トリミング結果: =IF(LENB(A2)>B2, LEFTB(A2,B2), A2)
残バイト数: =B2-LENB(A2)
4つ並べておけば、現在のバイト数・超過判定・自動トリミング・残りバイト数が一度に把握できますよ。データ整形のたびに手作業する手間が減るので、月次のシステム連携業務がぐっと楽になります。
ARRAYFORMULAで範囲一括適用
Googleスプレッドシートならではのワザも紹介しますね。ARRAYFORMULA(範囲に対して数式を一括適用する関数)と組み合わせると、行数ぶんの数式を書かなくて済みますよ。
=ARRAYFORMULA(IF(A2:A100="", "", LENB(A2:A100)))
LENBは本来単一セル向けの関数です。ARRAYFORMULAでラップしてあげると、範囲一括で動きますよ。A列が空なら空白を返すようにIFを入れておくと、末尾の空行が「0」で埋まるのを防げます。
LENB関数でよくあるエラーと対処法
LENB関数でつまずきやすいポイントを3つ紹介します。原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。
結果が想定と合わない
「半角だけのつもりでLENBを使ったら、思ったより多くなった」というときは、全角スペースや全角記号が紛れているケースがほとんどです。見た目ではわからない全角混入を疑ってみてください。
LENB-LENの差分を見れば、全角文字の個数が一瞬でわかります。
=LENB(A2) - LEN(A2)
この結果が0でなければ、全角が混ざっている証拠ですよ。ASC関数(全角を半角に変換する関数)と組み合わせて整形するのも手ですね。
配列を直接渡したときの挙動
LENB関数自体は引数1つで単純なので、エラーは起きにくいです。ただし、配列(範囲)を直接渡したときは想定外の結果になることがあります。
=LENB(A2:A10) → 結果は A2 の値だけ(範囲は無視)
範囲に一括適用したいときは、先ほど紹介したARRAYFORMULAでラップしてくださいね。
=ARRAYFORMULA(LENB(A2:A10))
これで範囲ぶんの結果が縦に並びます。
数値や日付を渡したときの挙動
LENB関数に数値や日付を渡すと、文字列化された見た目の桁数をカウントします。日付は内部的に数値で管理されているため、想定外の結果になることがありますよ。
| 数式 | 結果 | 補足 |
|---|---|---|
=LENB(123) | 3 | 数値は桁数ぶん |
=LENB(TODAY()) | 5 | 日付のシリアル値(例: 46401)の桁数 |
=LENB(TEXT(TODAY(),"yyyy/mm/dd")) | 10 | 文字列化してからカウント |
日付のバイト数を測りたいときは、TEXT関数で表示形式の文字列に変換してから渡すのが正解ですよ。シリアル値のまま渡すとズレるので、気をつけてくださいね。
まとめ
スプレッドシートのLENB関数は、全角2バイト・半角1バイトで文字列のバイト数を返す関数です。シンプルながら実務で使い出がありますよ。最後に要点を整理しておきましょう。
- 構文は
=LENB(文字列)の1引数。空文字列は0、数値は桁数ぶんを返す - 日本語環境では全角=2バイト、半角カナを含む半角文字=1バイトでカウント
- LENB-LENで全角文字の個数が取得でき、全角混入チェックに便利
- LEFTB/RIGHTB/MIDBと組み合わせると、超過検出から自動トリミングまで一本でこなせる
- 基幹システム連携のCSV整形、入力フォームのバリデーション、固定長ファイル処理で活躍
- ARRAYFORMULAでラップすれば、範囲一括適用も可能
まずは手元の商品名リストや摘要欄データで、=LENB(A2) を使ってバイト数の分布を見てみてください。どの行が上限オーバーしているのか、どこに全角が混ざっているのか、数式1本で可視化できますよ。バイト単位のデータ整形が必要なら、LEFTB・RIGHTB・MIDBの使い方もあわせて覚えておきましょう。対応できる業務の幅がぐっと広がりますよ。
Excel版の挙動と比べたい場合は、ExcelのLENB関数の使い方もご覧くださいね。
