ここから本文です

excel2003 vbaでのsortの処理が非常に遅いです。sortの高速処理を教えて下さい。

dadazetonzetonzetonさん

2016/9/121:48:07

excel2003 vbaでのsortの処理が非常に遅いです。sortの高速処理を教えて下さい。

閲覧数:
113
回答数:
2

違反報告

ベストアンサーに選ばれた回答

id07242016さん

2016/9/123:58:36

(vba)

ifs系 (countifs, sumifs など) 関数を使用しなければ早くなります。

単純な if系集計 (countif, sumif) も遅いです。

配列系 (sumproduct など) はさらに遅いです。

その他無駄な計算式、重い計算式が多いと遅くなります。

これらがなくなる、又は行が少なくなれば高速になります。


◆1つの案として、計算を手動に変更。
application.calculation = xlcalculationmanual
application.enableevents = false
└ 処理後にもとに戻す


◆計算式でなくピボット利用の方が高速。


◆計算式を値化にして良いなら値化で
大幅に早くなります。


◆db系ができるならば自ブック接続 ado からの
sql 中の order by で、確実に早くなります。


◆些細なことですが、セルの書式(上寄せ、横
均等、折返し文字その他)は行数が多いと遅く
なります。ブックを開くスピード自体が相当に
遅くなるためわかり易いです。
この場合はデータ範囲をコピーして別シートへ
値貼り付けし、そちらを使用すればOK。
システムから出力されたデータなどで多いです。
(アクセスからtransferspreadsheet でなく、
outputtoを使用した場合など)


◆2003行数程度なら配列内計算で十分のため、
バブルソートなどの方法でも早くなる可能性
が高いです。


、2003は ifs系 なかったかもしれません。

質問した人からのコメント

2016/9/8 22:57:04

ソートする値(vlookup関数の値)をソートする前に値のcopyをしてからソートをすることにより処理遅延が解消されました。

ベストアンサー以外の回答

1〜1件/1件中

2016/9/200:09:31

こんにちは。
エクセルのsortは、基本機能を使ってください。
関数は手動計算、もし、キーだったら、数値に定着させてからです

エクセルvbaは、行で処理しているので、基本機能の処理には、勝てません。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。