EXCEL関数・マクロ・条件付き書式の重さについて

このQ&Aのポイント
  • 関数、マクロ、条件付き書式のどれがもっとも重くなる原因なのか検討しています。
  • A~Zまでの24列の中に、1列だけボリュームのある文章が入ったレコードを処理する場合、関数、マクロ、条件付き書式のどれが適しているか検討しています。
  • EXCEL初心者がEXCEL2010とWindows7を使用しており、重い処理を軽減する方法を知りたいです。
回答を見る
  • ベストアンサー

関数、マクロ、条件付き書式。重いのはどれ?

こんにちは。 会社でレコードの羅列を見やすくするためにブックを刷新しています。 現状はプロトタイプという事でそれなりに動いてくれているのですが、他の質問でもしています通りマクロの動作が不安定であったり、動作が重かったりしてもう少しなんとかならないかと思案しています。 本当は10000件位のレコードを処理したいのですが、この間条件付き書式を付けたとたんにモッサリしたので1000件に減らし、過去のすぐに必要な訳ではないレコードは別シートにコピーし、本テーブルはその都度クリアして使う仕様にしています。 そこで、質問なのですが、複雑さなどにもよるのでしょうが、以下の場合関数、マクロ、条件付き書式はどれがもっとも重くなる原因でしょう。 A~Zまでの24列で、その中に1列だけこの質問位のボリュームのある文章が入るが他は日付とか名前などの軽い情報ばかり。 これが1000件位です。 この中のA列がB列を監視し、Bが(1)ならAに1が立つ様にし、その1の立ったA列を見に行くマクロボタンがA列の1を抽出するという使い方です。 この処理が5種類ほどあります。 IF、AND、OR位しか使っていないし、条件付き書式も1000件全体を見なければならないのは3つほどです。 これで結構重いです。 EXCEL初心者なのですが、私よりも初心者に囲まれて仕事をしているので何とかしなければなりません。 EXCEL2010、Windows7です。 どうぞよろしくお願いします~(><)

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>この間条件付き書式を付けたとたんにモッサリしたので1000件に減らし、 との事ですが、付けたのは条件付き書式だけなのでしょうか?  もしかしますと、条件付きではない通常の書式も使用していない範囲にまで大量に設定した事は無いでしょうか?  例えば条件付き書式か通常の書式を設定された際に、行数と列数が共に限られた長方形のセル範囲に限定して設定するのではなく、縦1列丸ごと(行数の指定無し)とか、横1行丸ごと(列数の指定無し)と言った直線状の範囲を指定して書式等を設定したりはされた事は無いでしょうか?  確かに関数や条件付き書式が原因で重くなる事は珍しい事では御座いませんが、重くなる原因と成り得る事はそれだけに限っている訳では御座いません。  例えばA列全体をまとめて選択してから、その選択範囲に対して書式を設定しますと、A1:A1048576の範囲内にある全てのセル、即ち1048576個のセルに対して書式が設定された事になりますから、例えセルの値が変化する箇所がたった1箇所であっても、Excelというアプリケーションがモニター上に表示する内容を決定する際には、A1セルからA1048576セルまでの1048576個のセルの表示内容をチェックし直す事になります。  例え関数や条件付き書式が設定されているセルが1000行目までしかなかったとしましても、通常の書式が1048576行目まで設定されていた場合には、Excelは毎回毎回1048576行目までのセルの表示内容を決め直している訳ですから、処理が重くなる訳です。  又、セルに入っているデータでは無いとは言え、書式設定の設定を記録しておいて表示に反映させるためにもデータが必要になりますから、書式(条件付き書式と通常の書式のどちらか一方でも)が設定されているセルの数が多ければ、その分だけファイルを保存したり開いたりする際にも時間を要する事になります。  試しに問題のシートを開いてから以下の操作を行ってみて下さい。 [ホーム]タブをクリック   ↓ 「編集」グループの中の[検索と選択]ボタンをクリック   ↓ 現れた選択肢の中にある[条件を指定してジャンプ]をクリック   ↓ 現れた[選択オプション]ダイアログボックスの中にある[最後のセル]にチェックを入れる   ↓ [選択オプション]ダイアログボックスの[OK]をクリック  するとExcelが現在実際に使用しているセル範囲の中で最も右下にあるセルが選択されます。  そのセルが例えセルに入っているデータとは関係が無いセルであっても、Excelはそのセルの所まで毎回チェックを繰り返している訳です。  その様な無駄な設定を削除するには、下記の参考URLのページに掲載されている方法を試してみて下さい。 【参考URL】  【Excel】なぜかやたら重いエクセルファイルを軽くする方法 - アメーバブログ   http://ameblo.jp/sugoikaizen/entry-11483781729.html  ワークシートの最後のセルを特定してリセットする - Office Support   https://support.office.com/ja-jp/article/%e3%83%af%e3%83%bc%e3%82%af%e3%82%b7%e3%83%bc%e3%83%88%e3%81%ae%e6%9c%80%e5%be%8c%e3%81%ae%e3%82%bb%e3%83%ab%e3%82%92%e7%89%b9%e5%ae%9a%e3%81%97%e3%81%a6%e3%83%aa%e3%82%bb%e3%83%83%e3%83%88%e3%81%99%e3%82%8b-c9e468a8-0fc3-4f69-8038-b3c1d86e99e9?ui=ja-JP&rs=ja-JP&ad=JP  Excel で最後のセルをリセットする方法 - Microsoft Support   https://support.microsoft.com/ja-jp/kb/244435

urbanite
質問者

お礼

ご回答ありがとうございます。 1000件でもセル内の文章が多かったり、条件付き書式が1000件全部に付いていたり、30列×1000行のテーブル内の1列に”1”が付いていたらその行全体を色付けするなど。。。 重くなるのは当たり前でしょうか。 マクロもシンプルに、件数も100件程度に絞って再度やってみます。 ありがとうございます!

その他の回答 (2)

noname#245936
noname#245936
回答No.2

余談ですが、マクロで処理前に画面更新をオフ、処理後にオンにする命令を入れるととても速くなります。

urbanite
質問者

お礼

ご回答ありがとうございます。 それは先日同僚に教えてもらってやりました。 体感すごく早くなりますね!

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

条件付き書式で数式を使っていると1つのセルの変化でもすべての数式について再計算を行うので負荷が大きくなります。 対策としては自動再計算をOFFにして必要の都度F9キーの打鍵で再計算させると負荷が軽減されます。 マクロはイベントが発生する度に実行されるだけなので負荷は小さいと思います。

urbanite
質問者

お礼

ご回答ありがとうございます。 確かに条件付き書式を入れたとたんに重くなったので、原因は書式なのだと思います。 でも書式は変えられないので、件数を減らして色々試してみます。 ありがとうございます!

関連するQ&A

  • マクロの記録で条件付き書式の動作を記録する

    エクセル2010なのですが マクロの記録で条件付き書式の動作を記録することは出来ないのでしょうか? A列に対して条件付き書式の動作を記録したら Sub Macro1() ' ' Macro1 Macro ' ' Columns("A:A").Select End Sub これしか記録されてません。 私の記録の仕方が悪かったのでしょうか?

  • マクロ 列ごとの条件付き書式

    マクロで列ごとの条件付き書式を作成したいです 条件としては ・列ごとに上限値が1行目に下限値が2行目に入力されている ・3行目以降に測定値が入力される ・その3行目位以降の測定値のセルの書式を上下限値から外れた値は色を変えたい ・50列ほどデータがある (例) A1 10 A2 5 A3~A100 数字 条件をA3~A100に設定 A1(10)より大きいもの、A2(5)より小さいものはセルの色を黄色 B1 15 B2 7  B3~B100 数字 条件をB3~B100に設定 B1(15)より大きいもの、B2(7)より小さいものはセルの色を黄色 こんな感じで列ごとにデータと規格値が入っているものが50列あります。 どうかよろしくお願い致します。

  • エクセルの条件付き書式設定マクロについて

    エクセルの条件付き書式設定マクロについて A列からH列まで文字や数字が投入されています。 データが5,000行くらいあって、50行に1回くらい不定期で空白の行が出てきます。 データが入っている全ての範囲において、「C列が空白以外の場合に、 同じ行のA列からH列のセルの上と下を破線?(.Weight = xlHairline)左も右も縦線は実線? (.Weight = xlThin)にする」という条件付き書式を設定したいのですが、マクロが 上手く組めません。 ひとつのセルの条件付き書式の設定はマクロを組めるのですが、 A1:H5000というような広範囲で条件付き書式の設定を組むのが上手くいきません。 教えていただけないでしょうか。

  • 条件付き書式について

    条件付き書式について A   B      C 件数 売上商品名  売上日 0   リンゴ    1/1 4   リンゴ 1/2 3   リンゴ 1/3 0   リンゴ 1/4 上記のような表をエクセル2003で作成しました。 A列の3行目と6行目の0件は誤入力です。 そこで質問なのですが、Bにリンゴの入力があり、かつ、 A列に0が入っていれば、セルを黄色にする条件付き書式 設定をしたいのですが、やり方がよくわかりませんでした。 教えてください。 あと、できればVBAで出来る方法も教えていただければ幸いです。

  • エクセル2010 条件付き書式について

    エクセル2010での数式を使った条件付き書式について教えてください。 画像のようなデータで、条件付き書式を使ってレコード(行)に塗りつぶしを設定したいと思ってます。 条件は合計欄(G列)の最大値のレコードに黄色の塗りつぶしと最小値のレコードに赤の塗りつぶしのようにしたいと思っています。 1.B4~H11を範囲選択 2.条件付き書式 3.数式を使って書式設定 4.=max(G4:G11) というように設定してみたりしてるのですが、違うようで、思うようになりません。 絶対参照を行につけたり列につけたりしてもうまくいきません。 わかる方がいたらぜひ教えてください。 よろしくお願いします。

  • 条件付き書式をマクロで記入する方法?

    よろしくお願いいたします。 エクセル2010を使用しておりますが、 1行目の列ごと(A列、B列・・・・)に各種類の品物が入力されていて 2行目から、列ごとにその品物別の番号が多数あるのですが、 指定した番号が一致したらセルの文字を”太字”で”赤文字”、”黄色”で塗りつぶすと いった事がしたいのです。 条件付き書式でやればと思ったのですが、新しいルールといった作業が かなり時間がかかります。 そこで作成してもらいたい事は マクロで A列の番号 B列の番号 C列の番号 条件は太字、赤文字、黄色に塗りつぶす というような記述で列ごとに番号だけ変えれば上記のルールを実行できるといった ことをしたいのですが、可能でしょうか? できればマクロはほとんどわからないので、そのまま記述してもらえると助かります。 よろしくお願いいたします。

  • <エクセルSUMPRODUCTの使用と条件書式に関して>

    <エクセルSUMPRODUCTの使用と条件書式に関して> エクセルは合計と平均しか使用したことのない初心者です。 以下を求めたく、当サイトを拝見しておりましたが、合致するQ&Aが見当たらず (近いものはあるようなんですが、初心者すぎてうまく応用できませんで、、) 困ってお知恵を拝借したく、投稿します。 <状況> 列A1~A50、列B1~B50のセルに、1~30までの数字がランダムに入ってる。 ※エクセルは2000を使用しています。 <求めたいこと> (1)列A1~A50で「7と同等または7より大きい数字」が入っており、かつB1~B50で 「2と同等または2より大きい数字」が入ってるセルの個数を調べたい。 (2)上記の条件(A列で7以上、B列で2以上)のセルを網掛けしたい。 <試したこと/補足> ・「求めたいこと(1)」に関して、サイトを参考に以下を作成してみましたが、機能しなかったようです。  「SUMPRODUCT」を使用するのは検討違いでしょうか、、。 =SUMPRODUCT((A1:A50=">=7")*(B1:B50=">=2")) ・「求めたいこと(2)」に関して、条件が‘1以上のセル’などの場合は 「(書式→)条件付書式」を使用しております。が、上記のように「‘A列においては○以上’かつ ‘B列においては○以上’」のような複数の書き方はわかりません、、。 初心者で、状況の説明もつたなく恐縮ですが どなたかお力を頂けるとうれしいです。 どうぞよろしくお願いします。

  • エクセル2010条件付き書式

    いつもお世話になっております。 質問です、宜しくお願いします。 条件付き書式についてですが、2010にしてから上手く出来ません。 具体的には、A列に入力した数値とB列に入力した数値が違うときに赤色で塗りつぶすというものです。 エクセル2007では、簡単に出来たのですが2010ではうまく出来ません。 条件付き書式→新しいルール→指定の値を含むセルだけを書式設定→セルの値 →次の値に等しくない→B1を選択 書式で塗りつぶし「赤」を選択。 これでA1とB1の数値が違っていれば、赤で塗りつぶしになります。 A2・・・・以降コピーしても書式がコピーされません。 どのようにすれば出来るのか教えて下さい。 文章でうまく伝えられていないと思いますが宜しくお願いします。

  • エクセルと条件付き書式のコピーについて

    エクセルと条件付き書式のコピーについて エクセル2003で以下のような表を作成しました。 B列からE列に映画館の売り上げを入力しています。 したい処理は、もし、映画館A~Cの売り上げが 特定映画館の売り上げを下回っている場合、そのセルを 黄色で塗りつぶしたいのです。 条件付き書式のコピーをしましたが、上手くいきませんでした。 Cの2列に条件付き書式を設定して、コピーすればいいのでしょうか。 いっぺんに入力できる方法を教えてください。 お願いします。

  • Excel の『条件付き書式』について

    いつもお世話になっております。 Excelで以下のような表を作成しています。 『条件付書式』について教えてください。  列A  列B  列C   日付  曜日  空白セル 列Aに日付を入力して、その日が土日であったらセルに網掛けをするように設定しています。 列Bは、列Aに日付を入力すると自動で曜日を表示するようにし また、土日であったら自然に網掛けになるようにしました。 (列A・列Bをドラッグして『条件付書式』で設定)  『条件付書式』は…     条件1=WEEKDAY(A○,2)=7     条件1=WEEKDAY(A○,2)=6 …で設定。 列Cも同様にしたいのですが、どうもうまくいきません。 列A・列B・列Cとドラッグさせて『条件付書式』にしたのですが 土日でなくても網掛けになってしまいます。 列Cも土日であれば網掛けにする方法があれば アドバイスいただけますでしょうか。 (自動では無理なようでしたら地道に網掛けしていくとします。) よろしくお願い致します。

専門家に質問してみよう