配列変数を例題を交えながら説明【ExcelVBA】
配列変数は複数の値を格納することが可能
変数 → 1つだけ入れることができる 配列変数 → 複数入れることができる
ReDimステートメント 動的配列の領域を再割り当て(元々の値はなくなる)
ReDimステートメント Preserve → 既存のデータを保持(配列変数に入れているデータはそのまま)
Option Base 1ステートメント 配列の下限を1に設定
配列変数名(下限 to 上限) 配列変数の下限・上限を調べる
Ubound関数 配列の上限がいくつか取得
Lbound関数 配列の下限がいくつか取得
セルの値を配列に入れる場合下限が1からになる
配列の良さは速度、最後の配列をセル範囲に入れる部分はOffsetではなくResizeの方がわかりやすかったかな。。
変数名が〇〇、△△というのは邪道すぎたのですが、動画は毎回一発撮りの為諦めました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
実際に使用したサンプルコード
Option Explicit
Option Base 1
Public Sub sample()
Dim 配列1() As Variant
配列1 = Worksheets("保管").Range("A1").CurrentRegion.Value
Dim 〇〇 As Long
Dim △△ As Long
△△ = UBound(配列1, 2)
〇〇 = 0
Dim i As Long
For i = 1 To UBound(配列1, 1)
If 配列1(i, 1) = "A店" Then
〇〇 = 〇〇 + 1
End If
Next
Dim 配列2() As Variant
ReDim 配列2(〇〇, △△)
i = 1
Dim x As Long: x = 1
Dim j As Long: j = 1
For i = 1 To UBound(配列1, 1)
If 配列1(i, 1) = "A店" Then
For j = 1 To UBound(配列1, 2)
配列2(x, j) = 配列1(i, j)
Next
x = x + 1
End If
Next
Dim 基準セル As Range
Set 基準セル = Worksheets("説明").Range("B658")
Range(基準セル, 基準セル.Offset(UBound(配列2, 1) - 1, UBound(配列2, 2) - 1)).Value = 配列2
End Sub