【マクロVBA】セル・変数の文字数を求める方法!LenB関数でバイトデータでも対応可能!

未分類

VBAでは、セルに文字を入力したり、変数に文字や数字を格納したりなど
様々な機能が存在します。

今回はセルに入力されている文字や数字、変数に格納された文字や数値をもとに
何個の文字が存在するかを求める方法について紹介したいと思います。

さらにバイトデータとしての文字の出力
についても対応できますので、ぜひ参考にしてみてください。

それでは見ていきましょう。




⬛︎こんなことができるようになる

・セル・変数に格納された文字数を出力できる
・バイトデータとしての文字数を出力することができる

⬛︎構文の説明

出力先=Len(対象となる文字列)

⬛︎忙しい人向けのコピペ用ソースコード

Sub 文字数を出力()
出力先を入力= Len(文字数を求めたい対象)
End Sub

⬛︎文字数を出力する方法

・セルに格納されている文字数を出力する

まず初めにセルに格納されている文字数を出力してみましょう。
見本として下図のようなExcelファイルを用意しました。

セル番地「B3」に「あいうえお」と言う文字が入っています。
今回は、こちらの文字数を求めて
セル番地「D3」に出力したいと思います。

では構文を再度見ていきましょう。

出力先=Len(対象となる文字列)

今回の「対象となる文字列」はB3になりますね。
なので「Len(Range(“B3”))」のようになります。
「Len(Cells(3, 2))」でも構いません。

では、ソースコードを見ていきましょう。

Sub 文字数を出力()
Range("D3") = Len(Range("B3"))
End Sub

構文も単純なので、簡単なソースコードとなっています。
それでは実行していきましょう。
結果はこのようになっています。

セル番地「B3」に含まれている文字は「あいうえお」であることから
文字数が「5」ということがわかります。
なので、D3に出力された結果は合っているといえますね。

別の文字でも見てみましょう。

それでは実行してみましょう。
結果はこのようになります。

12345678」は「8」文字なので
こちらもあっていますね。

・変数に格納されている文字数を出力する

先ほどはセルから文字を取得していましたが
今回は変数から文字を取得して文字数を求めたいと思います

今回は先にソースコードの方を紹介したいと思います。
見本のソースコードはこちらです。

Sub 変数から文字数を出力()
Dim Word As String
Word = "独学エクセル塾"
Range("B3") = Len(Word)
End Sub

では説明に移りたいと思います。
変数「Word」には「独学エクセル塾」と言う文字が格納されています。

この変数「Word」の文字数を出力するために構文に当てはめていきましょう。

出力先=Len(対象となる文字列)

 

対象となるのは文字列を変数なので「Word」が入ります。

それでは実行してみましょう。
結果はこのようになりました

変数「Word」には「独学エクセル塾」と言う文字が格納されていますよね。
つまり、文字数は「7」なので
出力結果は正しいことがわかります。

・バイトデータの形式で文字数を出力する

時として、文字数をバイトデータとした文字数で出力したい場面があったとします。
その時にはLenB関数を使用します。

Len関数との違いとしては、
全角の文字を2文字、半角の文字を1文字としてカウントします。

では、構文を見てみましょう。

出力先=LenB(対象となる文字列)

 

では、こちらも、下図の見本で説明したいと思います。
セル番地「B3とB4」に入力されてある文字を「D3とD4」にバイトデータで求めた文字数を出力したいと思います。

しかしここで注意点です。
VBAの処理では読み取った文字はすべて全角同様の「2バイト」で
読み取ってしまいます

ここで使用するのが「StrConv」です。
こちらの関数は文字列を変換する機能があるのですが、今回は下記のように使用します。

StrConv(対象の文字, vbFromUnicode)

 

vbFromUnicode」で読み取ったデータを全角(2バイト)・半角(1バイト)に変換します。

上記機能を使用して、セルに入力されてある文字数を求めてみましょう。
ソースコードこちらです。

Sub 文字数をバイトで出力()
Range("D3") = LenB(StrConv(Range("B3"), vbFromUnicode))
Range("D4") = LenB(StrConv(Range("B4"), vbFromUnicode))
End Sub

それでは実行しましょう。
結果はこのようになりました。

全角は2文字、半角は1文字ですから
うまく機能していることがわかります。

■練習問題

練習問題も別の記事でまとめているので是非参考にしてみてください!

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

 

Len 関数 (Visual Basic for Applications) | Microsoft Learn

LEN 関数、LENB 関数 – Microsoft サポート

⬛︎まとめ

いかがだったでしょうか?
Len関数を使用すれば指定した文字数を簡単に求めることが出来ます。

またLenB関数を使用すればバイト数で
求めることが出来ますが「StrConv」で文字を変換しなければならないことを覚えておいてください。

 

さらにLen関数を応用した記事についてもまとめていますので是非参考にしてみてください。

【マクロVBA】右端側・後ろから対象の文字が何文字目に含まれているか確認する!InStrRev ► 独学エクセル塾 (dokugakuexcel.com)

 

それでは次回の記事でお会いしましょう。

コメント