1. TOP
  2. Excel
  3. プログラミング(2)「配列」にデータを格納する

プログラミング(2)「配列」にデータを格納する

目次

プログラミングを勉強してまたぶち当たる壁のひとつ・・「配列」の壁。
なぜ使うのか?普通の変数ではいけないのか??

使ってみれば便利です。筆者も何かと、配列が好きです。
もしかしたら、いつしか勉強するかもしれない「オブジェクト指向」の基礎的な考え方にもつながっていくのでは?とも思います。

今回は普通の変数を使った場合と比較して「配列にデータを格納する」ソースを書いてみたいと思います。
ExcelVBAを使っています。言語により記述方法が多少違いますが、考え方は同じだと思います。

 

(1)普通の変数を使用する場合



上のような5人分のデータがあり、名前と点数を変数に格納する場合のソースです。

Option Explicit

'---------------------------------------
' 名前と点数のデータを格納
' 配列を使用しない
'---------------------------------------
Sub ArraySample1()

Dim Name1 As String, Name2 As String, Name3 As String, Name4 As String, Name5 As String
Dim Score1 As Integer, Score2 As Integer, Score3 As Integer, Score4 As Integer, Score5 As Integer

Name1 = Cells(3, 2): Score1 = Cells(3, 3)
Name2 = Cells(4, 2): Score2 = Cells(4, 3)
Name3 = Cells(5, 2): Score3 = Cells(5, 3)
Name4 = Cells(6, 2): Score4 = Cells(6, 3)
Name5 = Cells(7, 2): Score5 = Cells(7, 3)

End Sub

名前を格納するための変数を「Name1」~「Name5」まで5つ用意して格納します。
点数を格納するための変数を「Score1」~「Score5」まで5つ用意して格納します。

データが5件なのでこれで済みますが・・100件あったら・・(汗)

スポンサードリンク

(2)配列を使用する場合



データの内容は(1)と同様です。名前と点数を配列に格納する場合のソースです。

Option Explicit
'---------------------------------------
' 名前と点数のデータを格納
' 配列を使用する
'---------------------------------------
Sub ArraySample2()

Dim StName(1 To 5) As String
Dim Score(1 To 5) As Integer
Dim StNo As Integer

For StNo = LBound(StName) To UBound(StName)
'配列の最小値~最大値まで繰り返し
StName(StNo) = Cells(StNo + 2, 2) '名前を格納
Score(StNo) = Cells(StNo + 2, 3) '点数を格納
Next StNo

End Sub

配列は、引出しのようなイメージです。(筆者の勝手なイメージです)

名前を格納するための配列「StName」は1~5段目まで5件の文字列データを格納できる引出し。
点数を格納するための配列「Score」は1~5段目まで5件の数値データを格納できる引出し。
何段目の引出しに格納するかを変数「StNo」が指定している・・

1人目のデータ・・・3行目のデータ・・・StName(1)に「田中」・・・Score(1)に50が格納される
2人目のデータ・・・4行目のデータ・・・StName(2)に「高橋」・・・Score(2)に80が格納される

ここから法則「n人目のデータはn+2行目のデータが格納される」がわかります。
そして「StName(StNo) = Cells(StNo + 2, 2)」となります。

この法則が続くのであれば、データが100人となっても配列の大きさを変えれば対応できます。

今回はデータの格納について書きました。配列からデータを取り出す際の記事はこちらです。
http://kg-update.net/pgbeginer_array2/  

「ExcelVBAに関する書籍」を
楽天で探す     

「プログラミングに関する書籍」
yahooで探す     

スポンサードリンク


コメントを書き込む

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。

CAPTCHA