こちらに「2次元配列を使った表データ処理の実務サンプル集」をまとめました。
Excelの表データを一括で配列に読み込み、加工してから書き戻すことで、処理速度と効率が大幅に向上します。
実務サンプル集(2次元配列)
1. セル範囲を配列に読み込む
Sub LoadRangeToArray()
Dim arr As Variant
' A1:C10 の範囲を配列に格納(1始まりの2次元配列になる)
arr = Range("A1:C10").Value
MsgBox "行数: " & UBound(arr, 1) & " 列数: " & UBound(arr, 2)
End Sub
VB👉 セル範囲を一括で配列に読み込む。1セルずつループするより高速。
2. 配列をセル範囲に一括書き戻す
Sub WriteArrayToRange()
Dim arr(1 To 3, 1 To 2) As Variant
arr(1, 1) = "商品A": arr(1, 2) = 100
arr(2, 1) = "商品B": arr(2, 2) = 200
arr(3, 1) = "商品C": arr(3, 2) = 300
Range("E1:F3").Value = arr
End Sub
VB👉 配列を一括でセルに出力。大量データ処理で有効。
3. 配列内でデータ加工(数値加算)
Sub ProcessArray()
Dim arr As Variant
Dim i As Long, j As Long
arr = Range("B2:D6").Value
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(arr, 2)
If IsNumeric(arr(i, j)) Then
arr(i, j) = arr(i, j) * 1.1 ' 10%加算
End If
Next j
Next i
Range("F2:H6").Value = arr
End Sub
VB👉 配列上で計算処理を行い、結果をまとめて書き戻す。
4. 条件抽出(特定列の値でフィルタ)
Sub FilterArray()
Dim arr As Variant, result() As Variant
Dim i As Long, r As Long
arr = Range("A2:C10").Value
ReDim result(1 To UBound(arr, 1), 1 To UBound(arr, 2))
r = 1
For i = 1 To UBound(arr, 1)
If arr(i, 2) >= 100 Then ' B列が100以上
result(r, 1) = arr(i, 1)
result(r, 2) = arr(i, 2)
result(r, 3) = arr(i, 3)
r = r + 1
End If
Next i
If r > 1 Then
Range("E2").Resize(r - 1, 3).Value = result
End If
End Sub
VB👉 条件に合う行だけを抽出して別の場所に出力。
5. ソート処理(簡易版)
Sub SortArrayByColumn()
Dim arr As Variant
Dim i As Long, j As Long, tmp As Variant
arr = Range("A2:C10").Value
' B列(2列目)で昇順ソート
For i = LBound(arr, 1) To UBound(arr, 1) - 1
For j = i + 1 To UBound(arr, 1)
If arr(i, 2) > arr(j, 2) Then
tmp = arr(i, 1): arr(i, 1) = arr(j, 1): arr(j, 1) = tmp
tmp = arr(i, 2): arr(i, 2) = arr(j, 2): arr(j, 2) = tmp
tmp = arr(i, 3): arr(i, 3) = arr(j, 3): arr(j, 3) = tmp
End If
Next j
Next i
Range("E2:G10").Value = arr
End Sub
VB👉 配列上でソートしてから書き戻す。大量データでも高速。
✅ まとめ
- 読み込み:
Range.Value→ 配列 - 加工:配列上で計算・条件判定・ソート
- 書き戻し:配列 →
Range.Value - メリット:セルを1つずつ操作するより圧倒的に高速
💡 この仕組みを応用すれば、CSVや外部データを配列に読み込んで加工 → Excelに一括出力といった処理も効率的に実装できます。


