データをため込んで 一括で処理できる 「配列」を使ってみよう

Pocket

データをため込んで 一括で処理できる 「配列」を使ってみよう
データをため込んで一括で処理できる「配列」を使ってみよう

序文

はい。

今回は、やや抽象的な「配列」という物を作っています。

「配列」とは、多段の棚のことです。

棚の中には1棚につき1個だけ何でもため込んでおくことができます。

そして、好きなときに取り出せますし、全棚一括で取り出せます。

取り扱いたいものを一括で取り扱えるとことが、便利に使えることになるところです。

ほとんどのプログラムは、こういう一括で扱って効率を上げること(でも、一括で処理する中で、個別対応が必要な場合は個別に対応)ができます。

データをためておいて、後で寝ているときに、自動的に一括処理してくれたら便利ですよね。

なお、「配列」が扱える「エクセルVBA日本語化」のバージョンは、ver0.15.0以上が必要です。

下記、URLよりダウンロードされてください。

「エクセルVBA日本語化」のインストール方法については、以下のURLを参照してください。

また、VBAを編集する画面を開くには、以下のURLを参照してくだい。

「ALT」キーを押しながら、「F11」キーを押すと、VBAの画面が開きます。その後、「標準モジュール」というVBAを書くシートを作成します。

配列にデータをため込んで、最後にすべてをつなげた文字列にする

配列のサンプルとコードとして、一般によく使われる配列にデータをため込んで、最後に一括処理する方法を紹介します。

配列へデータを追加する「追加」メソッド

配列にデータをため込むには、「追加」メソッドを使用します。

「追加」できるデータは数値でも、文字列でも、何でも可能です。

最初に「h_変数取得」から「配列」を取得してるのに注意してください。

エクセルVBA日本語化の提供している変数は「h_変数取得」でしか取得できません。

また、「Set」も使っていることにも注意してください。これは「h_変数取得」でクラスを変数を取得する際の、必ず使うおまじないだと思ってください。

このように、「追加」メソッドで配列にデータを追加しています。

配列へためたデータをすてべてつなげて文字列にする

では、せっかく配列にデータをため込んだので、一括処理してみましょう。

ここでは、配列にためたデータをすべてつなげて文字列にするサンプルコードを紹介します。

なお、配列の各要素をつなぐ時に、間にカンマ「,をつけてつなげるオプションをしています。

具体的には、「w_配列.文字列化(カンマ)」のように配列のすべての要素をつなぐ「文字列化」メソッドに、「カンマ」オプションを指定しています。


実行結果:

[実行結果]
[実行結果]
無事、配列の各要素をカンマで区切ってつなげて文字列にできていますね。

数値である1」も文字列化できていることに注意してください。

文字列化できる可能性のあるデータはすべて文字列化されます。

文字列化できないデータは、空白の文字列「””」になります。

配列からデータを削除する

要素の値を指定して配列から該当するデータを削除する

次に配列から、ある値をもつデータを削除してみましょう。

配列から指定した値に等しいデータがすべて削除されます。

実行結果:

[実行結果]
[実行結果]
配列から指定した値に等しいデータがすべて削除されてますね。

重複しているデータもすべて削除されています。

配列からデータの順番を指定してデータを削除する

次に配列から、データの順番を指定して、その順番のデータを削除してみましょう。

実行結果:

[実行結果]
[実行結果]
w_配列.削除 2」によって、2番目のデータ”2”が配列から削除されます。

続く「w_配列.削除 2」によって、またもや2番目のデータが削除されます。すでに「”2”」は削除されていますので、このときの2番面のデータは”A”であり、「”A”」が削除されます。

実行結果でも、「”2”」と「”A”」が削除されていますね。

文字列をカンマなどの区切り文字で区切って配列化する

今度は、文字列を配列に変えてみましょう。

どういう理屈かといいますと、例えば、”1,2,3,4,5”という文字列を、カンマを区切って15までを一つ一つデータとして持つ配列にしてみる、ということです。

これが意外と便利で、文字列として扱っているデータから「文字列追加」メソッドで配列にし、逆に配列から「文字列化」メソッドを使って文字列に逆変換することができます。

必要なときに文字列にし、また、別の必要なときに配列にする、ということが可能で、プログラミングの柔軟性が高まります。

サンプルコードは以下の通りです。

実行結果:

[実行結果]
[実行結果]
カンマ「”,”区切りの文字列を、いったん配列にし、最後に配列のデータすべてを”|”で区切って文字列化しています。

「文字列化」メソッドは、標準ではカンマ「”,”」区切りで文字列化しますが、第1引数に「その他」を指定すると、2引数で指定した区切り文字列で区切って文字列化します。

このような柔軟性がありますので、「その他」オプションもこの機会に覚えておいてください。

「要素ごとにメソッド呼び出し」メソッドで配列の数値の合計値を計算する

配列の紹介の最後に、少々応用的な使い方を紹介します。

「要素ごとにメソッド呼び出し」メソッドというものがあり、このメソッドの1引数にサブルーチン名を与えると、配列のすべての要素をスキャンし、要素ごとに第1引数のサブルーチン(メソッド)を要素つきで呼び出します。

「配列のすべての要素ごとにサブルーチン(メソッド)を呼び出す」というところが重要な箇所で、配列に今何個要素が入っているか気にしなくてすみます。

また、For文をいちいち書かなくても、配列のすべての要素をループしてくれます。各ループでは第1引数のサブルーチンを、要素データを伴って呼び出します。

1引数のサブルーチンで要素を受け取り、加工したい処理を行います。

実行結果:

[実行結果]
[実行結果]
実行結果は、「合計=55」となりました。

1から10まで合計すると、55になる」という有名な計算です。

上記コードのポイントは「Set w_合計 = h_変数取得.整数(0, “合計=”)」で取得した整数変数を使用し、接頭辞を「合計=にしていることがまず一つです。

この「w_合計」変数を、「要素ごとにメソッド呼び出し」の2引数に渡してます。

こうすると、「要素ごとにメソッド呼び出し」の1引数で指定したサブルーチン2引数に、w_合計」変数が渡されます。

「要素ごとにメソッド呼び出し」の第1引数で指定したサブルーチン「合計計算21引数には、配列の要素が1つずつ渡されます。

そして、「合計計算2」サブルーチンでは、配列の要素を整数変数iに変換し、「w_合計.増やす i」で、合計データにiを足し込んでいます。

このi110になります。

なお、上記サンプルコードは、せっかくの要素データ「値」を変数「i」に変換しています。

わざわざこのような処理をしているのは、「値」が文字列データであった場合でも、整数に変換できる場合は、整数に変換して扱おうという意図があります。

ただ、このもし整数へ変換できなかった場合は、エラーとなり「ERR1:」の行まで処理が飛んでしまいます。

このように、エラー処理を入れているため、サブルーチンが少々見づらくなっています。

結論

「エクセルVBA日本語化 ver0.15.0」で加えられた「配列」変数は、データをため込んでおいて、後で一括で処理するためのものでした。

配列のデータをすべて一括でつないで文字列化したり、文字列から一括で配列にデータをため込むことができました。

また、配列から値を指定してデータを削除したり、データの順番を指定してデータを削除したりできました。

応用として、配列のデータをすべてループして、指定したサブルーチンに各要素を与えつつ呼び出すこともできました。

この「要素ごとにメソッド呼び出し」メソッドは、慣れてくると便利に使えます。

それではー またー (^_^)

The following two tabs change content below.
KaBA@フリーランス修行中

KaBA@フリーランス修行中

こんにちは!IT業界で勤めて17年くらい務めています。プログラミング大好きやろーです。 このブログで皆さんがプログラミングに興味を持たれるのを心待ちにしています! 頑張って覚えられてください!よろしくお願いします。