私が働いている会社には、会社が昨年行った購入を追跡するためのExcelスプレッドシートがあります。このシートには、約1500行と30列があります。
数日前、このシートでのフィルタリングは非常に遅くなり始めました。キーワードの列をフィルタリングするには、約5秒かかります。このシートは多くのフィルターが適用され、煩わしいので、これはかなり長いです。シートには、他のシートやファイルへの数式や参照はありません。セルの変更で実行されている2つのマクロがありますが、両方のマクロを無効にしても高速にはなりません。
また、1つを除くすべての行を削除しようとしましたが、残りの行にフィルターを適用すると、完了するまでに5秒かかります。
なぜこれがそんなに遅いのかについて誰かが知っていますか?
これは通常、Excelがデータセットが実際よりもはるかに大きいと考えるために発生します。たとえば、セルA1048576に移動して書式設定した場合、外観が異なっていなくても、Excelでは100万行以上あると見なされます。これをテストするには、セルA1を選択し、CTRL + Endを押します。これにより、Excelがワークシートの最後のセルであると信じているものに移動します。これが問題である場合は、実際のデータが終了した後にすべての行や列を削除し、ファイルを保存して閉じ、再度開きます。これにより、Excelはこれらの空のセルをすべてデータの一部として表示しなくなります。これが機能しない場合は、データを選択して新しいファイルに貼り付けることで修正できます。
おそらく手遅れですが、自動計算をオフにしてください。 VBAでは、これら2つを使用して自動計算をオフにし、フィルターを適用してから、自動計算をオンに戻します。
Sub automatic_update_on()
Application.Calculation = xlAutomatic
End Sub
Sub automatic_update_off()
Application.Calculation = xlManual
End Sub
ステップ1:すべて選択(Ctrl + A)
ステップ2:ホーム>クリア>フォーマットのクリアに移動します。
Step3:ファイルを保存してフィルターを再適用します。
完了です。それはいつも私のために働きます。それがあなたのために働くかどうか私に知らせてください!