#13_3 配列を操作する関数
配列操作の3大関数を覚えよう
配列の操作する関数には色々なものがありますが、たくさんある配列要素を「結合する」、逆に文字列等のデータを配列要素に「分解する」、さらには配列から条件に合う要素を「検索する」という3つの機能が中心になります。
それぞれに使う関数を習得しましょう。
配列要素を結合しよう
配列に含まれる要素を1つの文字列として結合するのがJoin関数です。結合する際に、各要素の間に入る「区切り文字」を指定することができます。基本構文は次のようになります。
Join(結合元データ〔, デリミタ〕)
第1引数の結合元データには、結合する文字列を含む文字列型1次元配列を指定します。整数型の配列は指定することができません。
第2引数のデリミタには、要素を結合する際に要素間に挟む区切り文字を指定できます(2文字以上も可能)。省略した時には区切り文字を使わずに結合されるのではなく半角スペースが区切り文字になります。もし区切り文字を使いたくないのであれば、長さ0の文字列「""」を指定する必要があります。
配列要素に分解しよう
Join関数とは逆に、文字列を「区切り文字」で分割し、1次元配列に格納するのがSplit関数です。使用頻度はかなり多く、基本構文は次のようになります。
Split(分割元データ〔, デリミタ〔, 分割数〔, 比較方法〕〕〕)
第1引数の分割元データには、文字列と区切り文字を含む文字列式を指定します。ちなみに分割元データが長さ0の文字列「""」の場合には、要素数0のからの配列を返します。
第2引数のデリミタはJoin関数の時と同じ意味で、区切り文字を指定します。Split関数の場合は分割に用いる文字を指定しましょう。ちなみにデリミタを省略した場合には半角スペースを区切り文字として扱います。また、長さ0の文字列「""」を指定した場合には、Split関数はその分割元データ全体を1つの要素とする配列を返します。
第3引数の分割数には返す配列の要素数を指定できます。省略した場合にはすべての要素が配列として返されます。(値としては−1)
最後の比較方法ですが、これは分割を行う際の文字列を比較する方法を示す定数を指定し、省略した場合にはBinaryモードで比較されます。いかに表を示します。
比較方法の定数 | 値 | 比較方法の意味 |
---|---|---|
vbUseCompareOption | -1 | Open Compareステートメントの設定を使用して比較 |
vbBinaryCompare | 0 | Binaryモードで比較 |
vbTextCompare | 1 | Textモードで比較 |
それでは実際にSplit関数を用いた例を見てみましょう。ここで重要なポイントが、分割後の配列を格納する配列変数には、静的配列(myArra(3)など、最初から要素数を指定した配列)を指定できません。
文字列型の動的配列か、あるいはバリアント型の変数に代入する必要があります。
配列要素を検索して取得しよう
最後に、文字列型配列の中から指定された文字列を含む要素を取り出し、文字列型の配列に返すFilter関数を紹介します。基本構文は次のようになります。
Filter(抽出元データ〔, 検索文字列〔, 検索タイプ〔, 比較方法〕〕〕)
第1引数の抽出元データには抽出元の文字列型の1次元配列を指定します。
第2引数の検索文字列には、検索したい文字列を指定します。そうすることで抽出元データの配列の中から、この検索文字列を含む要素が取り出されます。
第3引数の検索タイプには、検索文字列が含まれている要素を返すか、あるいは含まれている要素を返すかを指定できます。この引数はブール型で指定でき、Trueを指定すると、検索文字列が含まれている要素を、Falseを指定すると、含まれていない要素を返します。ちなみに既定値はTrueです。
最後の引数の比較方法は、Split関数の時と同じです。