|
現在、約35万行・53列からなるブックA(csv)から、必要項目をオートフィルで抽出し、該当する項目の行データをブックBに貼り付けるというマクロを組んで使っているのですが、取り扱うデータが多く、処理に相当な時間がかかるため、配列を使って処理時間の短縮を図ろうと考えています。
流れとしては、二次元配列1にブックAのデータを格納し、必要項目に該当する行データを配列2に格納、別ブックに貼り付けるというものを作成しているのですが、うまくいかず、ご教示頂きたいです。
配列に関してはローカルウィンドウで確認する限りだとうまくいっているように見えるのですが、ResizeとUboundを用いて貼り付けようとしてもまくできません。
現在のコードです。(試作なので、ブックではなくシートで書いています)
Sub test()
Dim r As Long, c As Long, n As Long
r = Sheets("test").Cells(Rows.Count, 1).End(xlUp).Row
c = 53
n = 1
Dim area1 As Variant, area2() As Variant
Sheets("test").Select
area1 = Range(Cells(1, 1), Cells(r, c))
For i = LBound(area1, 1) To UBound(area1, 1)
If area1(i, 2) = "MN" _
Or area1(i, 2) = "SA" Or area1(i, 2) = "SL" Or area1(i, 2) = "SR" Or area1(i, 2) = "SU" _
Or area1(i, 2) = "GK" Or area1(i, 2) = "GS" Or area1(i, 2) = "GC" Or area1(i, 2) = "GH" _
Then
ReDim Preserve area2(n)
area2(n) = WorksheetFunction.Index(area1, i)
n = n + 1
End If
Next i
Sheets("test2").Range("A4").Resize(UBound(area2), 53) = area2
End Sub
|
|