私はこのサイトを何ヶ月も使用して、初期のコーディングのキャリアを始める手助けをしてきましたが、これが私の最初の投稿です。昨日フォーラムを検索していたときにこの質問を見逃していたら、申し訳ありません。500,000 行以上のテーブルを参照する約 6,000 のアクティブな Sumif を含むスプレッドシートがありました。ご想像のとおり、これは計算に少し時間がかかりました。ユーザーが選択した場合にのみ計算されるように、VBA に記述しました。ただし、sumif が非常に多いため、コードの実行には約 3 ~ 5 分かかります。これをスピードアップして、エンドユーザーのエクスペリエンスを向上させる方法を探しています。以下に sumif を実行する方法を投稿します。状況によっては、これは同じユーザー グループに対して 2 回 sumifs を実行していますが、1 つの異なる基準を使用しています。関連する情報を省略した場合はお知らせください。
For i = 1 To 12
Range("Emp_Utility").Offset(1, i).Activate
Do Until Cells(ActiveCell.Row, 2) = ""
ActiveCell.Value = Application.WorksheetFunction.SumIfs(Hrs, Emp, Cells(ActiveCell.Row, 2), Y, Cells(4, ActiveCell.Column), M, Cells(3, ActiveCell.Column))
ActiveCell.Offset(1, 0).Activate
Loop
Next i
For a = 1 To 12
Range("Emp_Billable").Offset(1, a).Activate
Do Until Cells(ActiveCell.Row, 30) = ""
ActiveCell.Value = Application.WorksheetFunction.SumIfs(Hrs, Emp, Cells(ActiveCell.Row, 2), Y, Cells(4, ActiveCell.Column), M, Cells(3, ActiveCell.Column), Bill, "No")
ActiveCell.Offset(1, 0).Activate
Loop
Next a