こんにちは、hokkyokunです。
エクセルのテーブルデータを配列に格納する関数です。
なぜそんなことをする必要があるのかは後でご説明いたします。
これやると実は結構便利なんです。
スポンサーリンク
関数
戻り値が少しややこしいですが
イメージとしては以下のようになります。
名前 | 数学 | 英語 | 家庭科 |
---|---|---|---|
小西 | 90 | 76 | A |
山田 | 91 | 93 | C |
このような表の場合
[
[ “名前” , “数学” , “英語” , “家庭科”], ←列名の配列
[[“小西” , 90 , 76 , “A” ] , [“山田” , 91 , 93 , “C”]] ←レコードの配列
]
Function table_Input(ByVal table As ListObject)
Dim r As Range
Dim columns As Variant
Dim i, j As Long
Dim data, datas As Variant
For Each r In table.HeaderRowRange
Call add_Elm(columns, r.Value)
Next
For i = 1 To table.ListRows.Count
data = Array()
For j = 1 To table.ListRows(i).Range.Count
Call add_Elm(data, table.ListRows(i).Range(j).Value)
Next
Call add_Elm(datas, data)
Next
table_Input = Array(columns, datas)
End Function
使い方
実際に使ってみます。
↑のテーブルの内容を配列に格納します。
Sub test_input()
Dim table As ListObject
Dim table_datas As Variant
Dim columns, datas As Variant
Set table = ThisWorkbook.Worksheets("Table2").ListObjects(1)
table_datas = table_Input(table)
columns = table_datas(0)
datas = table_datas(1)
End Sub
データが格納できました。
これ何に使うの?
これは何に使うのでしょうか?
私もこれを最初に作ったわけではありません。
配列の列並び替え関数を考えたときに
一度配列に入れ込んだ方が圧倒的に楽に作れると気づいたので作りました。
配列ってやっぱりプログラムの基本なんです。
とりあえず配列に入れることが出来さえすれば、
楽にコーディングできるようになります。
スポンサーリンク