配列変数を例題を交えながら説明【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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です