【VBA】配列の使い方をサンプルコードで紹介!
◇配列を使ったデータの平均値計算
データシートにたくさんの数値がある場合、通常はセルから値を取得して平均値を計算しますが、これは時間がかかります。
しかし、配列を使えば、一度に複数の値を読み込んで高速に平均値を計算できます。
Sub 配列を使った平均値計算() Dim dataRange As Range Dim dataArray() As Variant Dim sum As Double Dim average As Double Dim count As Long Dim cellValue As Variant Set dataRange = Range("A2:A1000") ' データが入っている範囲を指定 dataArray = dataRange.Value ' データを配列に一括読み込み count = 0 sum = 0 For Each cellValue In dataArray If IsNumeric(cellValue) Then sum = sum + cellValue count = count + 1 End If Next cellValue If count > 0 Then average = sum / count MsgBox "平均値は: " & average Else MsgBox "データが見つかりませんでした。" End If End Sub
◇配列を使ったデータの一括処理
データシートから値を読み込んで、配列に格納し、あとで一括で処理することも可能です。
以下の例では、データを配列に読み込み、2倍にしてシートに戻すシンプルな処理を行います。
Sub 配列を使った一括処理() Dim dataRange As Range Dim dataArray() As Variant Dim resultArray() As Variant Dim i As Long Set dataRange = Range("A2:A1000") ' データが入っている範囲を指定 dataArray = dataRange.Value ' データを配列に一括読み込み ReDim resultArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2)) For i = 1 To UBound(dataArray, 1) ' 2倍にして結果をresultArrayに格納 resultArray(i, 1) = dataArray(i, 1) * 2 Next i ' 結果をシートに一括出力 Range("B2").Resize(UBound(resultArray, 1), UBound(resultArray, 2)).Value = resultArray End Sub
◇配列を使った複数条件のフィルタリング
特定の条件に合致するデータだけを抽出する場合も、配列を使って効率的に処理できます。
以下の例では、特定の条件を満たすデータだけを別のシートに抽出します。
Sub 配列を使ったデータフィルタリング() Dim dataRange As Range Dim dataArray() As Variant Dim filteredArray() As Variant Dim i As Long Dim j As Long Dim condition As Double Set dataRange = Range("A2:C1000") ' データが入っている範囲を指定 dataArray = dataRange.Value ' データを配列に一括読み込み ReDim filteredArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2)) condition = 100 ' 100より大きいデータだけを抽出 j = 1 For i = 1 To UBound(dataArray, 1) If dataArray(i, 3) > condition Then ' 条件に合致するデータをfilteredArrayに格納 filteredArray(j, 1) = dataArray(i, 1) filteredArray(j, 2) = dataArray(i, 2) filteredArray(j, 3) = dataArray(i, 3) j = j + 1 End If Next i ' 結果を別のシートに一括出力 Sheets("フィルタリング結果").Range("A2").Resize(j - 1, UBound(dataArray, 2)).Value = filteredArray End Sub
◇最後に
これらのサンプルコードをベースに様々なデータ処理をおこなうことができます。
データ数が少ないと配列の有難みを感じづらいのですが、データ数が膨大になってくると配列の有用性がよく分かります。
この記事も誰かの役に立つと嬉しいです。