『VBAで高速処理をしたい』(VBA勉強中) よろしくお願いします。 今、VBAをゼロから勉強中でネットで検索してやっと完成したのですが、 処理がとても遅く困っています。 ファイルが2つありまして、1つは膨大なデータでもう1つはそれを集計 するためのファイルがあります。 両方、開いているのを条件に作ってみました。 Sub 計算() Dim wb1 As Workbook Dim wb2 As Workbook Dim ws1 As Worksheet Dim ws2 As Worksheet Set wb1 = Workbooks("データ.xlsm") Set wb2 = Workbooks("集計用.xlsm") Set ws1 = wb1.Worksheets("生産データ") Set ws2 = wb2.Worksheets("年間生産データ") Dim i As Integer Range("D27").Select i = 27 Do Until Cells(i, 4).Value = "" Cells(i, 3) = WorksheetFunction.CountIfs(ws1.Range("B:B"), ">=" & ws2.Range("I23"), ws1.Range("P:P"), "1", _ ws1.Range("B:B"), "<=" & ws2.Range("T24"), ws1.Range("P:P"), "1", _ ws1.Range("F:F"), ws2.Cells(i, 4)) On Error Resume Next Cells(i, 2) = WorksheetFunction.VLookup(Cells(i, 4), ws1.Range("F:G"), 2, False) If Err Then Cells(i, 2) = "データなし" End If On Error GoTo 0 i = i + 1 Loop End Sub 集計用のファイルに、D列が空白になるまでB列とC列に計算していく VBAなのですが、なぜ遅いのかわかりません。 どなたかよろしくお願いします。 < 使用 Excel:unknown、使用 OS:unknown > ---- セルの数にもよりますが、セルへの書き込みを逐次実行すると、時間がかかる場合があります 関数の計算時間も掛かりそうです。 参考サイトです。 http://officetanaka.net/excel/vba/speed/s11.htm (´・ω・`) 2021/05/17(月) 13:25 ---- (´・ω・`)さんありがとうございます。 > セルの数にもよります 今のところ1000行くらいです。 参考サイトありがとうございます。 動的配列を使えば早くなる可能性があるってことでしょうか? (VBA勉強中) 2021/05/17(月) 15:32 ---- >動的配列を使えば早くなる可能性があるってことでしょうか? セルへの書き込みの回数を減らせば、速くなるかもしれません 関数の再計算の数を減らすのもいいかも知れません。 配列は、書き込みの回数を減らすための手段ですが、 「配列を使えばそれで速くなる」ともいいづらい... RangeのFormulaR1C1プロパティで式を一気に書き込んで、 値貼り付けで、式を値に変換っていうのが早いような気がします。(未検証) (´・ω・`) 2021/05/17(月) 15:38 ---- 参考過去ログです。 [[20210402110826]] 『VBAで他のファイル参照 COUNTIF関数』 (´・ω・`) 2021/05/17(月) 16:27