Aという文字を、Aという文字で分割してみる

面白いネタを拝見したので、昨日までのテーマを一時お休み。
f:id:Infoment:20200129232505j:plain

VBAには、Splitという関数がある。
docs.microsoft.com
文字通り、対象となる文字列を、指定文字で分割する関数だ。

では、Aという文字をAという文字で分割したらどうなるだろう。
試してみた。

Sub TEST()
    Dim arr As Variant
        arr = Split("A", "A")
End Sub

分割した戻り値は配列なので、arrという変数で受け取ってみた。
結果は以下の通り。
f:id:Infoment:20200129233032p:plain

Aという文字を中心に、その左右に「無の空間」(ここでは"")だけが残ったような感じだ。概念的で、何とも面白い。

また、戻り値は0から始まる配列なので、UBound(arr)=1となる。奇しくも、「A」が何個あるか?という問いがあれば、その答えと一致する。

ということで、「指定文字列内に指定文字が幾つあるか」を返す関数にしてみた。

Function CountCharacter(source_char As String, _
                        count_char As String) As Long
    CountCharacter = UBound(Split(source_char, count_char))
End Function

確認した結果が、↓こちら。
f:id:Infoment:20200129233756p:plain

特徴的なのは、数える文字が「AB」のような複数文字でもOKということ。この場合、「AB」というパターンが何セットあるかを数えることになる。
f:id:Infoment:20200129233943p:plain

「数える」以外のケースでも色々と応用が利くので、重宝しています。

参考まで。