スプレッドシートで文字列を扱っていると、「このデータのバイト数を知りたい」という場面にぶつかることがありますよね。基幹システムに流し込む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-LEN = 全角文字数」と同様に、「半角文字数だけを取り出す」公式も覚えておくと便利ですよ。
=LEN(A2)*2 - LENB(A2)
考え方はシンプルです。仮にすべての文字が全角なら LENB は LEN×2 になります。半角文字が混ざっていると、全角換算より LENB が小さくなります。その差が半角文字の個数というわけです。
| 文字列 | LEN×2 | LENB | LEN×2-LENB | 意味 |
|---|---|---|---|---|
| “あいうえお” | 10 | 10 | 0 | 半角0文字 |
| “ABCDE” | 10 | 5 | 5 | 半角5文字 |
| “Excel関数” | 14 | 9 | 5 | 半角5文字(E,x,c,e,l) |
住所や氏名データの中に英数字が何文字含まれているかを集計したい場面などで役立ちますよ。「全角LENB-LEN」と「半角LEN×2-LENB」の2つをセットで覚えておけば、文字種の分析がかなり楽になります。
スプレッドシートの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バイトを超えると、行がハイライトされます。入力者に視覚的に伝わるので、修正漏れが減りますよ。
入力規則にLENBを組み込んで全角・半角混入を弾く
バイト数チェックを「後から検出」するだけでなく、そもそも入力時点で弾いてしまう方法もありますよ。スプレッドシートの「データの入力規則」のカスタム数式にLENBを使うと、担当者が誤って全角入力してしまうミスを事前に防げます。
半角のみ許可する入力規則
社員コードや製品コードなど、半角英数字しか入力させたくない列に設定します。
=LEN(A1)=LENB(A1)
LENとLENBが等しい=全文字が半角、という条件になります。全角文字が1文字でも入ると LEN < LENB になるため、入力が弾かれますよ。
全角のみ許可する入力規則
氏名欄など、全角表記を統一したい列に使います。
=LEN(A1)*2=LENB(A1)
設定手順は次の通りです。
- 対象の列または範囲を選択する
- メニューの「データ」→「データの入力規則」を開く
- 「条件」で「カスタム数式」を選び、上記の数式を入力する
- 「無効なデータの場合」を「入力を拒否する」に設定する
入力規則のカスタム数式にLENBを使う方法は、REGEXMATCH(正規表現でパターンマッチングする関数)と比較してもメリットがあります。=REGEXMATCH(A1,"^[a-zA-Z0-9]+$") のような数式では英数字以外の記号が漏れる場合もありますが、LEN=LENB の方法なら全角スペース・全角記号・全角カタカナなど「あらゆる全角文字」をまとめて弾けますよ。
コピペで使えるテンプレート
よく使う組み合わせを一式テンプレートにしました。そのまま貼って使ってくださいね。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」で埋まるのを防げます。
SUMPRODUCTで超過行数を一括集計する
個々の行に判定を入れるだけでなく、「全体で何件が上限オーバーしているか」を1セルでまとめて出したい場面もありますよね。SUMPRODUCT(配列の積の合計を返す関数)と組み合わせると、超過件数を一括で集計できます。
=SUMPRODUCT((LENB(A2:A100)>40)*1)
「LENB(A2:A100)>40」で各行をTRUE/FALSEに変換し、×1で0/1に変えてから合計します。ARRAYFORMULAなしで範囲全体に対して動くのがポイントですよ。
さらに超過率(パーセンテージ)を出したい場合はこうします。
=SUMPRODUCT((LENB(A2:A100)>40)*1)/COUNTA(A2:A100)
セルの表示形式をパーセンテージにしておけば、「今月の請求データで40バイト超は全体の○%」という数値がすぐ確認できます。上長への報告やシステム移行前の品質チェックで、件数ベースのサマリーが必要なときに重宝しますよ。
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関数で表示形式の文字列に変換してから渡すのが正解ですよ。シリアル値のまま渡すとズレるので、気をつけてくださいね。
ExcelのLENB関数とスプレッドシートのLENB関数、動作が違う点に注意
ExcelでLENBを使っていた方がスプレッドシートに移行するときに、意外な落とし穴があります。全角英数字のバイト数の扱いが異なります。
| 文字 | Excel | スプレッドシート |
|---|---|---|
| 半角英数字(ABC) | 1バイト | 1バイト |
| 半角カタカナ(アイウ) | 1バイト | 1バイト |
| 全角ひらがな(あい) | 2バイト | 2バイト |
| 全角英数字(ABC) | 2バイト | 2バイト |
基本的なカウントルールは両者で共通しています。ただし、Excelでは「全角・半角の判定をShift-JISの文字コード基準」で行うのに対し、スプレッドシートは内部的にUnicodeで処理します。そのため、旧規格で定義されたマルチバイト文字(一部の特殊記号など)の扱いで稀に結果が異なる場合がありますよ。
ASC関数で文字種を統一してからチェックする
移植する際は、事前にASC関数(全角英数字・カタカナ・記号を半角に変換する関数)で文字種を統一してからLENBに渡すのが安全です。
=LENB(ASC(A2))
ただし、ひらがな・漢字はASCでは変換されないので、あくまでも英数字・記号・カタカナが対象であることに注意してくださいね。ExcelとスプレッドシートのLENBを混在させる業務では、どちらの仕様でカウントするかをチームで明示しておくとトラブルを防げますよ。
ExcelのLENBとの詳しい比較はExcelのLENB関数の使い方もあわせてご覧ください。
ASC・SUBSTITUTEでデータを整形してからバイト数を計る
LENBに渡す前にデータを整形しておくと、より正確なバイト数チェックができますよ。2つのパターンを紹介します。
ASC関数で全角英数字・カタカナを半角化してからチェックする
ユーザーが全角で入力してしまった英数字を「半角換算」した上でバイト数を判定したい場合、ASCでまとめて変換してからLENBに渡します。
=LENB(ASC(A2))
「全角・半角どちらで入力されても同じ基準でバイト数判定したい」という要件に対応できますよ。
SUBSTITUTE関数でスペースや区切り文字を除外してからチェックする
氏名欄の姓名間スペースや、電話番号のハイフンを除いたバイト数を測りたい場合は、SUBSTITUTE(指定した文字を別の文字に置換する関数)で除外してからLENBに渡します。
半角・全角スペース両方を除外する場合:
=LENB(SUBSTITUTE(SUBSTITUTE(A2," ","")," ",""))
ハイフンを除外する場合:
=LENB(SUBSTITUTE(A2,"-",""))
SUBSTITUTEは全角と半角を区別して処理するため、半角スペースと全角スペースは別々に指定する必要がある点に注意してくださいね。
まとめ
スプレッドシートのLENB関数は、全角2バイト・半角1バイトで文字列のバイト数を返す関数です。シンプルながら実務で使い出がありますよ。最後に要点を整理しておきましょう。
- 構文は
=LENB(文字列)の1引数。空文字列は0、数値は桁数ぶんを返す - 日本語環境では全角=2バイト、半角カナを含む半角文字=1バイトでカウント
- LENB-LENで全角文字の個数が取得でき、全角混入チェックに便利
- LEFTB/RIGHTB/MIDBと組み合わせると、超過検出から自動トリミングまで一本でこなせる
- 基幹システム連携のCSV整形、入力フォームのバリデーション、固定長ファイル処理で活躍
- ARRAYFORMULAでラップすれば、範囲一括適用も可能
まずは手元の商品名リストや摘要欄データで、=LENB(A2) を使ってバイト数の分布を見てみてください。どの行が上限オーバーしているのか、どこに全角が混ざっているのか、数式1本で可視化できますよ。バイト単位のデータ整形が必要なら、LEFTB・RIGHTB・MIDBの使い方もあわせて覚えておきましょう。対応できる業務の幅がぐっと広がりますよ。
Excel版の挙動と比べたい場合は、ExcelのLENB関数の使い方もご覧くださいね。
