見出し画像

VBAの配列まとめ

こんにちは。
仕事でエクセルで作成したカレンダーの予定表から社員のスケジュールをアクセスのテーブルに取り込む作業をしました。

その際、表の縦横を配列で入れ替える必要があり、配列は苦手でよく分かってないのですが、色々調べた結果なんとか実装できたので
まとめました。

①二次元配列を縦1列に並べる

sub 予定入力()

Dim 予定(0),予定1() As Variant
Dim i,j as long

予定(0) =Sheets("sheet1").Range("f11:AN17").Value 
 '735列を取得

j= 36

For i = 1 To UBound(予定(0), 1) '35
'17行分ループ

予定1 = WorksheetFunction.index(予定(0), i)

Sheets("sheet2").Range(Cells(j + 1, "C"), Cells(j+ UBound(予定1), "C")) = WorksheetFunction.Transpose(予定1)

j = j + 35

Next i
End sub

②1行35列の日付行を人数分縦に繰り返していれる

セルに出力するためには、二次元配列である必要があるとのこと。

Function 日付入力()

Dim day(), day2() As Variant
Dim i, j, n As Long


day = Sheets("sheet1").Range("f2").Resize(1, 35).Value

'Resizeで表記すると二次元配列になるとのこと


ReDim day2(1 To 456, 1 To 1)
'2行目から35行を人数分を繰り返して日付を入れると456行目まで必要

For i = 1 To UBound(day, 1)
For j = 1 To UBound(day, 2)
    day2(j, i) = day(i, j)
Next
Next


For n = 2 To 456 Step 35

Sheets("sheet2").Range(Cells(n, 1), Cells(UBound(day2, 1), UBound(day2, 2))) = day2

Next

End Function

下記のサイトが分かりやすかったです。

この記事が気に入ったらサポートをしてみませんか?