[[20181105090257]] 『重い関数を軽くしたい』(pk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重い関数を軽くしたい』(pk)

いつも大変お世話になっております。
4シートに以下のような関数を入れて日次実績の集計をしているのですが
毎日保存するのに40分程、かかる時には4~5時間かかってしまいます。

以下のような関数を軽く出来る関数は無いでしょうか?

=SUMIFS(元data!E:E,元data!B:B,F1,元data!D:D,D4)+SUMIFS(元data!F:F,元data!B:B,F1,元data!D:D,D)+SUMIFS(元data!I:I,元data!B:B,F1,元data!D:D,D)+SUMIFS(元data!L:L,元data!B:B,F1,元data!D:D,D)

ご教示宜しくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


例えば「元data!E:E」ですが、データが増えてもそのまま使えて便利なのですが、最終行1048576までが範囲となるので、重くなります。 これを、「元data!E$1:E$9999」のように、末尾より必ず大きいくらいまでを範囲にすれば、軽くなりますよ。 すべてのデータ範囲指定を書き換えてみてください。

よく見る工夫としては、マクロでデータのある最下行を得て、数式を毎回ぴったりの範囲に書き換えるとか、最終行をデータよりひとつ下の行までとしておき、この空白行を塗りつぶしておいて、データ追加は必ず空白行より上に挿入するとか。(行追加は無視されますが、行挿入なら自動的に範囲が増える)
(???) 2018/11/05(月) 09:32


(???)様

早速ご返信頂きありがとうございます!
それもやってみて、元data!E$1:E$30000に変更したのですがやはり重くてダメでした。。。

マクロで出来れば良いのですがマクロ初心者でVBAが組めずなのですが
やはりこういった場合にはマクロが良いのでしょうか

マクロでも良いやり方があればどなたか教えて頂けたら幸いですm(__)m

(pk) 2018/11/05(月) 09:46


ぱっと見、足すための条件は全てB列とD列のようですが、E,F,I,Lを無条件に足す作業例を用意しておき、この1行だけでSUMIFSする、というのも試してみてください。

しかし、3万行にしては、保存に時間がかかりすぎていると思います。 行数を変えてもあまり効果が無いとなると、数式以外が原因ではないでしょうか? 例えば、「ホーム」−「セルのスタイル」に、変な定義が大量に登録されている、とか、実は元データとはサーバ上に置いた別ブックだとか?
(???) 2018/11/05(月) 09:59


(???)様
お礼が遅くなりましてすみません!
なるほど!『E,F,I,Lを無条件に足す作業例』 こちらを試してみようと思います!

このSUMIFSの式は横は31日分までの列で縦は800行ぐらいあるのでそこに関数が
全部入っている×4シートなので計算が遅いのかもしれません(><)

教えて頂いたE,F,I,Lを無条件に足す作業例をやってみたいと思います。

ご丁寧にご教示頂きましてありがとうございました。
また宜しくお願い致しますm(__)m

(pk) 2018/11/09(金) 17:00


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.