スプレッドシートのLENB関数の使い方|バイト数

スポンサーリンク

スプレッドシートで文字列を扱っていると、「このデータのバイト数を知りたい」という場面にぶつかることがありますよね。基幹システムに流し込む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)
“あいうえお”510
“ABCDE”55
“Excel関数”79
“商品A-100”710

全角だけ、半角だけなら違いは出にくいです。でも混在すると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関数の使い方もご覧くださいね。

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