【VBA】全てのシートを配列を使って高速に抽出する方法
日々の業務で大量のデータを扱う際、手作業でのデータ抽出は時間がかかります。この記事では、VBAを使用して全シートのデータを高速に配列に格納し、効率的に処理する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub ExtractAllSheetsToArray()
Dim ws As Worksheet, arr() As Variant
Dim i As Long, j As Long, numSheets As Long
Dim lastRow As Long, totalRows As Long
' 全シートの数をカウント
numSheets = ThisWorkbook.Sheets.Count
' データ配列の初期化
ReDim arr(1 To numSheets, 1 To 1048576, 1 To 256) ' 最大行数と最大列数を設定
' シートごとにデータを抽出
For Each ws In ThisWorkbook.Sheets
i = i + 1
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
arr(i, 1, 1) = ws.Name ' シート名を配列の最初に格納
For j = 2 To lastRow
arr(i, j - 1, 1) = ws.Cells(j, 1).Value ' 列Aのデータを配列に格納
Next j
Next ws
' データ処理(ここでは表示のみ)
For i = 1 To numSheets
Debug.Print "Sheet Name: " & arr(i, 1, 1)
For j = 2 To UBound(arr, 2)
If Not IsEmpty(arr(i, j - 1, 1)) Then Debug.Print arr(i, j - 1, 1)
Next j
Next i
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。