値の文字数を調べる
2020年7月6日
|
1 2 3 |
Len(対象セル) LenB(対象セル) LenB(StrConv(対象セル, vbFromUnicode)) |
セルの文字数を調べるのは簡単? ですか? 私達は漢字ひらがなの2バイト文字文化圏です。
エクセルに限らずこの”2バイト文字”が曲者で文字列を扱う場合に注意が必要です。
文字数を調べるには [Len関数]を使います。
解説には
[Len]は単に文字数を得る。
[LenB]は、文字列の文字数ではなくその文字列を表すバイト数を返す。
とありますが、このままでは期待する結果は得られません。
私達は半角(1byte)と倍角(2byte)を混在して使用します(よね?)
この混在文字列の字数をどのようにカウントするかによって得たい結果が違うはずです。
[Len][LenB]の使い分け
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub M_getLen() ' '文字数を調べる 'Len 'vbFromUnicode ' For i = 5 To 7 Cells(i, 3) = Len(Cells(i, 2)) Cells(i, 4) = LenB(Cells(i, 2)) Cells(i, 5) = LenB(StrConv(Cells(i, 2), vbFromUnicode)) Next i End Sub |

上は、[B列]の文字数を[Len][LenB][Unicode変換]でカウントさせた結果です。
どうでしょう? どの結果が欲しいでしょうか?
[Len]は1バイト2バイト関係無く文字数を得るときに重宝します。
[LenB]は期待は1バイト文字は(1)、2バイト文字は(2)と数えて欲しいところですが
そうは行きませんでした。
「Unicode」に変換してから[LenB]すれば、思った結果が得られます。