- ベストアンサー
エクセルファイルの動作を軽くしたい。
いつもお世話になっております。 エクセル2007で表を作成しているのですが、関数の使いすぎ??でファイルの動作が非常に重くなって困っています。何とか軽くしたいと考えているのですが。よろしくお願いします。 (質問) (1)セルの参照方法によって動作に影響するのでしょうか?(例)相対参照<絶対参照 (2)列を参照するとき(A1:A:2000)を(A:A)とするといかがでしょうか?2000行までドラックするが面倒なので(A:A)としました。←これが一番効いているのかな?? (3)たとえばCOUNTIF関数で済む計算をCOUNTIFS関数で行うと動作が重くなる。 分かりずらい文章で申し訳ありませんがご意見を聞かせてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
重たくする要因としては、 色々あるかも知れませんが、 結構複雑なことを 関数で書いても 書き方次第では そう遅くなりませんよ♪ ただ、 セルの使用領域が 無駄に大きいのは 結構きついですね。 動作が緩慢なExcelを 私か目の当たりにした場合、 1、Pcの外部を 参照してないか 2、外部ファイルを 参照してないか (名前定義も含めて) 3、式が無謀、無駄、 または、遅いものを 多用してないか (VLOOKUPを多用、等) 4、セルの使用域が 無駄に多過ぎないか 5、変なVBAが 動いていないか 等を、確認しますよ? 因みに、 使用域は、PF5を押して出るメニュー内で 選択すると、知れます。 サッとだけですが お役に立てて居たならば 幸いです。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
(1)も(2)も(3)もあまり関係ないでしょう。 あえて言えば (3)にある CountIf関数もCountIfs関数も配列関数なので 多用すれば重くなります。 何かの集計でしょうかね。 ピボットテーブルとかに作業を置き換えられないですかね。
お礼
ありがとうございます。
- keithin
- ベストアンサー率66% (5278/7941)
>セルの参照方法によって動作に影響するのでしょうか? いいえ。そういう事はありません。 >列を参照するとき(A1:A:2000)を(A:A)とするといかがでしょうか 実際に使用している関数によります。ただしごく一般論で言えば、関数に与える計算対象セル範囲は、手抜きをして無駄に広げると僅かながらでも遅くなる原因にはなります。 ただし一方でシートをきれいに使えてない場合、つまり一例を挙げるならCtrl+Endキーを押したときにシートの最後のセルにジャンプしますが、実際に確認してみると「意識して使ってる表範囲よりもずーっと下の行のセルまで飛んでってしまった」みたいな状況では、セル範囲の与え方によって明らかに応答が違ってくる場合もあります。 >たとえばCOUNTIF関数で済む計算をCOUNTIFS関数で行うと動作が重くなる。 2番目のご質問と同じで、実際に使用している関数によって動作が重くなります。 ここでようやっと「あなたの具体的な数式」の断片が出てきましたが、COUNTIF関数は元々遅い部類の関数で、しかも無駄に大きな範囲を与えたり、無駄にたくさんのセルに放り込んでおいたりすると、増々遅くなる関数の一つです。 またCOUNTIFSも同様ですが、もっともCOUNTIFSを「使いたい(適切な)状況」においてSUMPRODUCTとか使ってるのに比べたらそれでも遥かに高速です。 >何とか軽くしたい 試しにどっかの1列の数式を上から下まで丸ごと消して、それでシートが軽くなったら「その列で使ってた計算式」が原因だとはっきり判りますね。 その数式の具体的な内容をあなたの実際のエクセルからキチンとコピーして別のご相談としてしっかり丁寧に説明して、具体的にどういう数式(この場合は計算のやり方)に直せばもっとサクサク動くようになるのか、新しいご質問として投稿し直してみて下さい。
お礼
ありがとうござます。
お礼
ご丁寧な説明ありがとうございました。