こんにちは! ハマラクです。
VBAでデータを扱うためには、箱(変数)を用意する必要があるということは知っているでしょう。ただ、ExcelでVBAを使うときは大量のデータを扱うことになるのではないでしょうか。そのデータごとに変数宣言してると手間もかかり、プログラム文も長くなってしまいます。そこで使用するのが配列です。
この記事では配列について説明するとともに、実際にどのようについて使用するのかを紹介したいと思います。この記事を読んでわかることは以下の通りです。
・配列とは何か
・データの扱いを多様化する「多次元配列」
・配列を使ってみる
VBAのみならずプログラムを組み際に配列を覚えると扱えるデータ量が圧倒的に増えていきます。この記事を読んで配列の使い方を覚え、実践してみてほしいです。
このサイト内の「VBA」タグはVBA初心者が日頃の業務を改善し、自分の時間を作っていくこと応援することを目的に作成しています。
配列とは何か
配列とは、一言でいうと「タンスを用意する」ということです。少しまだイメージがしにくいと思います。変数宣言とは、データを格納する箱を用意することと紹介しました。詳しくは次のリンクから見てみてください。
これに対して、箱をまとめて一つのくくりとして宣言することが配列の宣言です。イメージとしては次のような感じです。
変数は引き出し、配列は引き出しがあるタンスとすると分かりやすいのではないでしょうか。
使い方もタンスと同じで、宣言時に用途を決めて、用途に合ったデータをそれぞれの引き出しに格納していきます。
例えば、Aさんの業績を扱うときには、
1.Aさん業績で扱うデータを決める
2.Aさんという配列を扱うデータ数に応じて宣言する
3.宣言した配列にデータを格納する
という使い方になります。イメージとしては次のようになります。
配列のイメージができたところで次に宣言方法です。
・配列の宣言
Dim 配列名(用意する箱の数) As データ型
例:Dim Asan(4) As Integer
配列名、データ型を決めるのは変数宣言の時と同じです。配列の場合には、どれだけのデータを扱うのかということも宣言時に決めます。
扱うデータ数が決まっていないときには多くの箱を用意することも可能ですが、あまり無駄に用意するとデータ量が増え処理が遅くなってしまう原因となってしまいます。
・配列への格納方法
配列名(入れる場所の番号)= データ
例:
Asan(0) = 23 ‘担当数
Asan(1) = 1,000,000 ‘売り上げ
Asan(2) = 750,000 ‘コスト
Asan(3) = 250,000 ‘利益
配列も変数と同様にデータを格納することができます。ただ、配列の中のどこにデータを入れるかを決める必要があります。
ここで注意が必要なのが、「配列の番号は0から始まる」ということです。つまり、Asan(4)で4つの箱を持つ配列は、1~4ではなく0~3の番号の箱にデータを入れることになる。データを取り出すときも同様です。
配列の基本的なことは説明しましたので、さらに大量のデータを扱うための「多次元配列」について説明します。
データの扱いを多様化する「多次元配列」
先ほど説明した配列だと、Bさんのデータを扱うときにもう一つ配列を用意する必要が出てきます。さらに、人数が増えるとより多くの配列を宣言しないといけなくなってしまいます。この時に便利な配列が「多次元配列」です。
配列が複数の変数ををひとくくりにしているものとすると、多次元配列は複数の配列をひとくくりにしたものです。2次元配列の宣言方法を次に紹介いたします。
・配列の宣言
Dim 配列名(用意する配列の数,用意する変数の数) As データ型
例:Dim Menber(4,4) As Integer
先ほどの配列の宣言と異なる点は、宣言時に用意する要素数が増えていることです。イメージとしては次のようになります。
一次元配列が箱を1列並べるのに対し、二次元配列は箱を2列並べるような宣言となります。つまり2次元配列は、配列2個分の領域を用意することができるようになるということです。次にデータの格納方法を紹介いたします。
・二次元配列への格納方法
配列名(入れる配列の番号,入れる変数の番号)= データ
例:
Menber(0,0) = 23 ’Aさんの担当数
Menber(0,1) = 1,000,000 ’Aさんの売り上げ
Menber(0,2) = 750,000 ’Aさんのコスト
Menber(0,3) = 250,000 ’Aさんの利益
Menber(1,0) = 18 ’Bさんの担当数
Menber(1,1) = 2,000,000 ’Bさんの売り上げ
Menber(1,2) = 1,350,000 ’Bさんのコスト
Menber(1,3) = 650,000 ’Bさんの利益
1次元配列と同様に番号を指定してデータを格納します。出力する際も同様です。異なるところは、配列の番号を変えることで入れるデータの属性(人や所属など)を変え、データの管理が容易になる。
ここでは、
Menber(0,■) ← Aさんのデータ
Menber(1,■) ← Bさんのデータ
ということになります。
3次元配列、4次元配列も2次元配列の延長として考えることができます。では、次にExcelのデータを活用して実際に配列を使ってみましょう。
配列を使ってみる
多次元配列が分かったところで実際に配列を使ってみましょう。例題として次の画像のようにsheet1のデータを整理してsheet2に出力するプログラムを書いてみましょう。
処理の順番としては次の通りです。
1.変数・配列を宣言
2.メンバーを読み込み
3.メンバー毎のデータを入力
4.sheet2にデータを出力
用意する変数・配列は次のものを用意します。
1.メンバー用の配列 :menber(5)
2.データ入力用の配列 :result(4)
3.最大行入力用の変数 :maxrow
4.データを格納する番号:num
VBAを組んでみると次のようになります。
実行結果は次のようになります。
使用してみてどうだったでしょうか?
実行することまでできたでしょうか?
実はこの程度の計算であれば関数(countif関数、sumif関数)を使用することで簡単に出すことができます。しかし、次の場合はどうでしょう。
1.ブックを跨いで計算を実行する場合
2.1の場合でブックの名前が毎回変わる場合
3.メンバーが追加になった場合
VBAのメリットは、複雑な計算を実行するほど感じることができます。
終わりに
配列を一通り説明しましたが、いかがだったでしょうか。
今回のような例題でやったような売り上げなどの成績をまとめる場合、基幹システムからExcelファイルをダウンロードして転記していく作業があるのではないのでしょうか。そのよう場合に使用すると効果を実感することでしょう。
今回紹介したことを生かし、自分の身の回りの業務から改善してみてください。
ここまで読んでいただきありがとうございます。ではまた次回!
コメント