【Excelマクロ】Len関数の使い方と活用例|初心者向け文字数カウント講座

スポンサードリンク
VBA
  • VBAのLen関数の使い方が知りたい
  • Excelマクロで文字数をカウントする方法を探している
  • Len関数の具体的な活用例や応用テクニックが知りたい

このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。

  • VBAのLen関数の使い方や書き方が学べる
  • セル内の文字数をカウントする方法がわかる
  • Len関数を使った実践例や応用例を知れる

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

スポンサードリンク

ExcelマクロのLen関数とは?

Lenは文字列の文字数をカウントできる関数です。
例えば、「Utatane」という文字列をLen関数に渡すと、「7(文字)」という答えが返ってきます。

Lenの説明図

文字数に制限がある場合や、文字列の一部を取り出す場合によく使います。
Len関数と他の関数を組み合わせることで、マクロの幅が広がりますので、使い方をマスターしたいところです。

では、Len関数の使い方を見ていきましょう。

スポンサードリンク

Len関数の書き方・使い方

まずは簡単な使い方を見ていきましょう。

簡単な使い方

Sub 文字数カウント()
    Debug.Print Len("Utatane")
End Sub

詳しく解説いたします。

プロシージャの作成

Sub 文字数カウント()

End Sub

プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。

文字数をカウント

    Debug.Print Len("Utatane")

上記一文にて、引き渡した値の文字数をカウントし、「Debug.Print」で表示させています。
「Debug.Print」の表示方法は下記記事をご参考ください。

構文はいたって簡単です。

Len()を書きます。
()内の引数に「文字数をカウントする値」を書いて完了です。

【 Len(文字数をカウントする値) 】

【引数とは?】

引数は「引き渡す数(引き渡す値)」のことで、Len関数に渡す値を指します。
引数として「文字数をカウントする値」を渡すと、カウントされた文字数を私たちが受け取ります。
この受け取る値を「返り値(戻り値)」といいます。

例えば、魚屋さんにアジの3枚おろしを作ってもらいたい場合は、アジを渡して3枚おろしを受け取ります。
アジが引数、3枚おろしが返り値といったところでしょうか。

引き渡す値は「”(ダブルクォーテーション)」で囲ってください。
囲わないとうまく動きません。

これで文字数である「7」が返されます。

実行結果

文字数(今回は7)は、Long型で返されます。
Long型は大きい桁(約20億まで)の整数を扱うことができます(Integerは約3万)
文字数が極端に多くても心配いりません。

マクロが完成したら、実行して動作を確認してみましょう。

エクセル内に作成した自作のボタンを押してマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。

ショートカットキーを押すことでマクロを実行させることもできます。
詳しくは下記記事をご参考ください。

よくある疑問

前項の例を見て、下記の疑問を持った方もいるかと思います。

  • 全角も半角も1文字としてカウントされる?
  • スペースも1文字としてカウントされる?
  • 文字列が空白ならどうなる?

1つ1つ検証しながら解説いたします。

全角も半角も1文字としてカウントされる?

下記のVBAコードを見てください。

Sub 文字数カウント()
    Debug.Print Len("Utatane")
    Debug.Print Len("Utatane")
End Sub

2行目と3行目は同じ「Utatane」ですが、2行目は半角、3行目は全角です。
実行して違いを見てみましょう。

半角全角ともに1文字

どちらも同じ「7(文字)」が表示されました。
全角・半角にかかわらず1文字は1とカウントされるようです。

スペースも1文字としてカウントされる?
Sub 文字数カウント()
    Debug.Print Len("My name is Utatane")
End Sub

上記VBAコードは、スペース付きの文字列を表示させる例です。
(スペース含めて18文字)
実行してみましょう。

スペースも1文字としてカウント

18(文字)と表示されました。
スペースも1文字としてカウントされるようです。

文字列が空白ならどうなる?

下記のVBAコードを見てください。

Sub 文字数カウント()
    Debug.Print Len("")
End Sub

引き渡す文字列を空白にしてみました。
どうなるのか実行してみます。

空白を引き渡した結果

「0」が返ってきました。
特にエラーは出ませんでしたので、気付かず予期せぬ結果になる場合があります。
ご注意ください。

応用例

簡単な応用例を2つ紹介いたします。

変数を経由してカウント

これまでは、値を直接Len関数に渡してきましたが、変数に格納した値を渡すということもできます。

Sub 文字数カウント()
    Dim name As String
    name = "Utatane"
    Debug.Print Len(name)
End Sub

変数「name」に値「Utatane」を格納し、その変数「name」をLenに渡しています。
変数を渡す場合は、「”」で囲う必要はありません。

変数や宣言については、下記記事をご参考ください。

結果は直接値を渡した場合と同じ(7)です。

セルの値を取得してカウント

下記VBAコードは、A1セルの値を取得して変数に格納し、Lenでカウントした例です。

Sub 文字数カウント()
    Dim count As Long
    count = Len(Range("A1").Value)
    Debug.Print count
End Sub

「Range(“A1”).Value」でA1セルの値を取得することができます。

実践的な活用例

ここからは、より実践的な活用例を紹介いたします。
下記VBAコードを見てください。
A列の文字数をB列に書き込みした例です。

Sub 文字数カウント()
    Dim lastRow As Long
    Dim i As Long

    lastRow = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastRow
        Cells(i, "B").Value = Len(Cells(i, "A").Value)
    Next i
End Sub
文字数の書き込み

A列の最終行を取得し、B列も同じ最終行まで文字数を書き込みするということを繰り返しています。

▼関連記事(繰り返しのFor文、最終行の取得)

スポンサードリンク

LenB関数との違い

VBAには「LenB」という関数もあります。
こちらは文字数ではなく、合計の文字バイト数を返します。

半角も全角も1文字2バイトとなります。
下記の例を見てください。

Sub 文字数カウント()
    Debug.Print Len("Utatane")
    Debug.Print LenB("Utatane")
End Sub

2行目がLen、3行目がLenBです。
実行してみましょう。

上がLen(7文字)、下がLenB(14バイト)の結果です。
1文字2バイトのため、上図の結果になっていることがわかります。

スポンサードリンク

うまく動作しないときの対処法

「0」が返される

Lenに渡した値が空白になっているか存在しない可能性があります。
セルの値が適切に取得できているかなど、再度コードを確認してみましょう。

エラーが発生する

コンパイルエラー・実行時エラー

コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。

警告表示

マクロが無効になっている表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。

スポンサードリンク

最後に

Excelマクロで使えるLen関数について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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