Join関数とSplit関数を説明するまえに

Join関数とSplit関数を説明するまえに、必要な知識である変数の配列について説明します。連載の先の回で詳しく説明する予定ですが、配列とは、を何となく頭に入れてもらってから、Join関数とSplit関数を説明したほうが、わかりやすいと思いました。

変数名は英数文字で付けることができます。もし5個のデータがあるとき、それぞれ変数a、b、c、d、eとつけた場合、「3番目のデータを取り出したい」などと言うとき困ってしまいます。人の場合は指折り数えて3番目は変数cだとわかりますが、パソコンの場合は計算式を使っても出てきません。変数はデータの内容に順番が付いているときなどに便利な配列変数というものを持っています。たとえば、変数名はfにしてfの箱を5個作り、f(1)、f(2)、f(3)、f(4)、f(5)と呼ぶことにしましょう。3番目のデータを取り出したい時はf(3)のデータだということがすぐわかります。f(1)からf(5)までの箱の中に1から5までの数値が入っているイメージ図を以下に示します。

図3:配列イメージ図

配列イメージ図の1がf(1)、2がf(2)・・・5がf(5)を表しています。以下の例題のように、For文を使って順番を変数にして、簡潔にプログラムを組むことができます。

[リスト3]Rei_Array(文字列関数.xlsm)

Sub Rei_Array()
    Dim f(5)        '(1)
    For i = 1 To 5
        f(i) = i    '(2)
    Next i
    MsgBox (f(1) & "," & f(2) & "," & f(3) & "," & f(4) & "," & f(5))
End Sub

配列変数を使う場合必ず(1)のように、何個使用するかを宣言する必要があります。今回は5を指定しました5を指定するとf(0)からf(5)の6個の変数を作ります。今回はf(1)からf(5)を使用します。(2)で各変数のなかに順番の数値を入れています。 今回のf(1)のように順番の数値が1個のものを一次元配列と呼んでいます。配列変数には数値を入れることも、文字列を入れることもできます。次に説明するJoin関数とSplit関数は、配列変数を一つの文字列にしたり、一つの文字列を配列変数にしたりするものです。

[コラム]配列の開始番号

通常、配列は(0)から始まります。文字列の「何文字目か」などの文字の位置番号は1からはじまります。場合によって違うのは間違いやすいので(1)から始めたいというときは、最初に「Option Base 1」を書いておくと配列の最初は(1)からはじまるようになります。どちらを使うかはプログラムを組む人にまかされています。

Join関数

複数の文字列をつなげたい時に使用します。以下構文です。

[構文]Join関数

Join(sourcearray[,delimiter])

構文のカッコにカンマ区切りで表しているのが引数です。[]で囲まれているものは省略可能であることを表します。

引数 概要
sourcearray 結合する文字列を含む配列
delimiter (省略可)戻り値の文字列を区切る文字を指定、省略時はそのまま連結

Join関数の引数の説明

以下のリストは例題です。区切り文字が無いものと、有るものを表示しています。

[リスト4]Rei_Join(文字列関数.xlsm)

 Sub Rei_Join()
    Dim g(2)        '(1)
    g(0) = "私は"
    g(1) = "Join関数"
    g(2) = "です。"
    s = Join(g)     '(2)結果:私はJoin関数です。
    MsgBox (s)
    s = Join(g, "*")    '(3)結果:私は*Join関数*です。
    MsgBox (s)
 End Sub

(1)で「Dim g(2)」を指定し、g(0)、g(1)、g(2)の3個の変数を作ります。(2)は連結する際に区切り文字をつけないものです。(3)は区切り文字に「*」をセットしました。

Split関数

文字列を指定した文字で切り分ける時に使用します。以下構文です。

[構文]Split関数

Split(expression[,delimiter[,limit[,compare]]])

構文のカッコにカンマ区切りで表しているのが引数です。[]で囲まれているものは省略可能であることを表します。

引数 概要
expression 切り分けたい文字列と区切り文字が入った文字列
delimiter (省略可)区切り文字、省略するとスペースで区切る
limit (省略可)返す配列の要素数、省略するとすべて返す
compare (省略可)文字列比較モード、省略するとテキストモード

Split関数の引数の説明

compareの設定値について補足です

定数 説明<
vbBinaryCompare 0 バイナリーモードで比較
vbTextCompare 1 テキストモードで比較

引数compareの値の説明

バイナリーモードとテキストモードの違いはReplace関数のときの説明と同じです。以下のリストは例題です。

[リスト5]Rei_Split(文字列関数.xlsm)

 Sub Rei_Split()
      s = "せり,なずな,ごぎょう,はこべら,ほとけのざ,すずな,すずしろ" '(1)
      h = Split(s, ",")     '(2)
     For i = 0 To 6
         MsgBox ("h(" & i & ")=" & h(i))
     Next
 End Sub

春の七草の名前をカンマで区切ってみました。Split関数でカンマの所で区切って配列に入れます。配列はh(0)からはじまるので、h(6)まで入ります。図4が実行画面です。

図4:Split関数例題実行画面