[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルタの高速化』(じょあ)
1.3万件くらいの行数があって、別のワークシートのセルの番号を参照してフィルタの条件を変更するマクロを書きました。
正常に動くのですが、ソートを変えるだけで5秒くらいかかります。もう少し早くならないかと考え、Screenupdatingを追加してみましたが体感変わらず。
Rangeの指定をC列のみに変えても変わらずでした。
何か良い方法があればアドバイスいただけないでしょうか。
Application.ScreenUpdating = False
Dim Ws1 As Worksheet Set Ws1 = Workbooks("A.xlsm").Worksheets("Data") Dim ws2 As Worksheet Set ws2 = Workbooks("A.xlsm").Worksheets("差分確認")
Dim i As String i = ws2.Range("A2") With Ws.Range("A1:Q" & Ws.Cells(Rows.Count, "A").End(xlUp).Row) .AutoFilter field:=3, Criteria1:=i End With Application.ScreenUpdating = True
< 使用 Excel:Office365、使用 OS:Windows10 >
もし、数式で計算している箇所があるならば、Application.Calculation を手動にしてから処理し、終了後に自動に戻してみてください。
(???) 2020/07/07(火) 11:00
(マナ) 2020/07/07(火) 12:17
>正常に動くのですが、ソートを変えるだけで5秒くらいかかります AutoFilter後にソートすると という意味ですか? (seiya) 2020/07/07(火) 12:46
seiya様
上記コードを動かすと(あるセルの数字を参照させてオートフィルターを動かすと)、動作が完了するまでに5秒くらいかかります。
手動でフィルタをかけても同じくらいかかるので、やはりデータ量が問題のような気がしました。
1.6万件データがあったので、作業前にデータを絞り込む事にしました。
(じょあ) 2020/07/07(火) 18:40
事前にソートしてからAutoFilterしても変わりませんか? (seiya) 2020/07/07(火) 19:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.