配列変数を効果的に使ったデータ処理の高速化

記事
IT・テクノロジー
Excel VBAを使ったデータ処理を行う際、処理速度の遅さに悩んだことはありませんか?
特に大量のデータを扱う場合、従来のセル操作では時間がかかりすぎることがあります。
そこで、配列変数を活用することで処理速度を飛躍的に向上させる方法をご紹介します。

配列変数の基本

配列変数とは、複数のデータを一つの変数でまとめて扱うためのデータ構造です。
Excel VBAでは、Dimステートメントを使って配列を宣言します。
  Dim myArray(1 To 100) As Integer
上記の例では、整数型の配列変数myArrayを宣言し、要素数を100に設定しています。

配列を使ったデータの読み込みと書き込み

セル操作を直接行うと、Excelの再描画や内部処理が行われるため、処理速度が遅くなります。配列を使用することで、一度に大量のデータを読み込み、一度に書き込むことが可能になります。

セルから配列への読み込み
 Dim dataArray() As Variant
 Dim ws As Worksheet 
   Set ws = ThisWorkbook.Sheets("Sheet1")
 dataArray = ws.Range("A1:C100").Value
上記のコードでは、Sheet1のA1からC100までの範囲をdataArrayという配列に一括で読み込んでいます。

配列からセルへの書き込み
 Dim resultArray(1 To 100, 1 To 3) As Variant
 Dim i As Integer

For i = 1 To 100   
    resultArray(i, 1) = dataArray(i, 1) * 2     resultArray(i, 3) = dataArray(i, 3) * 2
Next i
ws.Range("D1:F100").Value = resultArray
このコードでは、dataArrayのデータを2倍にした結果をresultArrayに格納し、D1からF100の範囲に一括で書き込んでいます。

配列を使った高速データ処理のメリット

 高速化:セル操作を直接行わず、一括で読み書きすることで処理速度が大幅に向上します。
 効率化:複雑なデータ操作を簡潔に記述でき、可読性が向上します。
 メモリ効率:必要なデータのみをメモリに保持し、無駄な処理を減らします。

まとめ

Excel VBAでのデータ処理を高速化するためには、配列変数を効果的に使うことが重要です。配列を用いることで、一度に大量のデータを操作し、再描画や内部処理の遅延を回避できます。これにより、データ処理が飛躍的に早くなり、業務効率も向上します。

以下に同じ処理をする例を2つ挙げます。
1つは配列無し、もう1つは配列を使用。
比較のために動作時間を表示します。

例文1:配列未使用

Sub kuku1()
Dim startTime As Double
startTime = Timer
Dim n As Long
n = 1000
Dim x As Long
Dim y As Long
For x = 1 To n
    For y = 1 To n
        Sheet1.Range("A1").Offset(y - 1, x - 1).Value = x * y
    Next
Next
Debug.Print Timer - startTime
End Sub

例文2:配列使用

Sub kuku2()
Dim startTime As Double
startTime = Timer
Dim n As Long
n = 1000
Dim x As Long
Dim y As Long
Dim a() As Long
ReDim a(1 To n, 1 To n)
For x = 1 To n
    For y = 1 To n
        a(y, x) = x * y
    Next
Next
Sheet1.Range("A1").Resize(n, n).Value = a
Debug.Print Timer - startTime
End Sub

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら