概要
「この文字列の“半角文字”はいくつ?」
「全角と半角が混ざっているけど、半角だけ数えたい」
「ID やコードが“半角のみ”で入力されているかチェックしたい」
こうした場面で使うのが LENB(レンビー)関数です。
LENB は バイト数 を返す関数で、
- 半角文字 → 1 バイト
- 全角文字 → 2 バイト
というルールでカウントします。
この性質を利用すると、
半角文字数を正確に取り出すことができます。
LEN と LENB の違い
LEN(文字数)
=LEN(A1)
- 全角も半角も「1文字」として数える
- 例:「abcエク」→ LEN = 5
LENB(バイト数)
=LENB(A1)
- 半角=1バイト
- 全角=2バイト
- 例:「abcエク」→ 半角3+全角2×2=7バイト → LENB = 7
半角文字数を求める基本式
半角文字数は次の式で求められます。
半角文字数 = LENB − 全角文字数×1
全角文字数は
LENB − LEN
で求められるので、
半角文字数は次のように書けます。
半角文字数のテンプレート
=LEN(A1) - (LENB(A1) - LEN(A1))
仕組み:
- LEN(A1) → 全角+半角の総文字数
- LENB(A1)−LEN(A1) → 全角文字数
- 総文字数 − 全角文字数 → 半角文字数
パターン1:セル内の半角文字数を取得する
最も基本的な半角文字数取得式
=LEN(A1) - (LENB(A1) - LEN(A1))
例:A1 = 「abcエク123」
- LEN = 8
- LENB = 10
- 全角数 = 10−8 = 2
- 半角数 = 8−2 = 6
パターン2:半角文字が含まれているか判定する
半角が1文字でもあれば「半角あり」
=IF(LEN(A1)-(LENB(A1)-LEN(A1))>0,"半角あり","半角なし")
パターン3:半角のみで構成されているかチェック
全角が1文字もなければ「半角のみ」
=IF(LENB(A1)=LEN(A1),"半角のみ","全角混在")
理由:
全角があると LENB が LEN より大きくなるため。
パターン4:半角文字数が上限以内かどうか判定
半角文字数が 10 以下なら OK
=IF(LEN(A1)-(LENB(A1)-LEN(A1))<=10,"OK","NG")
パターン5:半角・全角の両方を表示する
半角数と全角数を同時に出す
半角数:
=LEN(A1)-(LENB(A1)-LEN(A1))
全角数:
=LENB(A1)-LEN(A1)
これを並べれば、
「半角:◯文字/全角:◯文字」
というチェック表が作れます。
注意点
絵文字・特殊記号は例外になることがある
LENB は「全角=2バイト」という前提で動きますが、
絵文字など一部の Unicode 文字は 2 バイトではないため、
正確にカウントできない場合があります。
一般的な日本語+英数字の範囲では問題ありません。
例題
問題1
A1 の文字列に含まれる 半角文字数 を求める式を書いてください。
=LEN(A1)-(LENB(A1)-LEN(A1))
問題2
A1 に半角文字が 1 文字でも含まれていれば「半角あり」、
含まれていなければ「半角なし」と表示する式を書いてください。
=IF(LEN(A1)-(LENB(A1)-LEN(A1))>0,"半角あり","半角なし")
問題3
A1 が「半角のみ」で構成されている場合は「OK」、
全角が混ざっている場合は「NG」と表示する式を書いてください。
=IF(LENB(A1)=LEN(A1),"OK","NG")
問題4
A1 の半角文字数が 10 以下なら「OK」、
11 以上なら「NG」と表示する式を書いてください。
=IF(LEN(A1)-(LENB(A1)-LEN(A1))<=10,"OK","NG")
問題5
A1 の文字列について、
半角文字数と全角文字数をそれぞれ B1 と C1 に表示したいです。
B1 と C1 に入れる式を書いてください。
B1(半角文字数):
=LEN(A1)-(LENB(A1)-LEN(A1))
C1(全角文字数):
=LENB(A1)-LEN(A1)
まとめ
半角文字数を取得するには、
LEN と LENB の差を利用するのが最も確実です。
基本形はこれだけ。
=LEN(A1)-(LENB(A1)-LEN(A1))
この考え方を覚えておけば、
半角チェック・全角チェック・桁数制限など、
文字列検証の幅が一気に広がります。
