• ベストアンサー

【Excel】 SUMPRODUCT関数の高速化

複数条件に当てはまるものを計数するのにSUMPRODUCT関数を多用したせいか,再計算に非常に時間がかかり困っています.再計算を手動にして,保存時も再計算しない設定にしてしのいでいますが,計算自体を速くするにはどうすればいいでしょうか.SUMPRODUCT以外の関数で同様のことができるもっと速い代替策があれば,そちらもご教示下さい.

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆データ数はどのていどあるのでしょうか? ◆SUMPRODUCT関数はデータが多くなると、処理時間が長くなります ◆SUMPRODUCT関数の高速化 1)式の中の範囲を最小限にする 2)SUMPRODUCT関数を使わずに、補助列方式にする 3)SUMPRODUCT関数を使わずに、フィルタやオートフィルタにする

KettaMachine
質問者

お礼

ご回答ありがとうございます. 現在は A:A のように列(行)全体を指定しておりますので,1)の方法を試してみたいと思います. もしもSUMPRODUCT以外の関数でも同じことが出来るのでしたら,そちらもご教示ください. 2)の補助列方式というのは,ひとつのセルに計算式を詰め込むと複雑になるので計算にワンクッション置くということでしょうか? 3)では条件を満たすものだけを表示させることができるようですが,該当数は目視で確認することになるのでしょうか? これらの点についても,もう少し具体的なやり方をお教えいただければ幸いです.

KettaMachine
質問者

補足

1)の方法でかなりの改善がみられましたので締め切らせていただきます. ご回答ありがとうございました.

関連するQ&A

  • SUMPRODUCT関数について

    皆様宜しくお願いします。 最近こちらでSUMPRODUCT関数をお教えいただいてから色々な集計に使っていて、かなり重宝しております。 ところで、私は簡単な集計にはSUMIF関数やCOUNTIF関数等を、複数条件にはSUMPRODUCT関数を使用しているのですが、集計作業においてSUMPRODUCT関数では出来ないものってどんなものでしょうか? お暇なときにご返答をいただければと思います。 宜しくお願いします。

  • SUMPRODUCT関数

    エクセル2003を使っています。 sumproduct関数で条件付の合計計算をしたいのですが 計算できる列とできない列があります。 計算可能な書式をできない列にコピーしても変わらなくエラーになります。(#VALUE!) 試しに同じ数値をCSVで保存したシートでは計算できました。 考えられる要因と対策は何でしょうか。

  • エクセル「SUMPRODUCT関数」で困っています

    SUMPRODUCT関数 初心者です。 項目数15くらい、約10000件のデータベースから、3項目の条件でSUMPRODUCT関数を使って20種別×15種別の表を作成してみようと思いました。 …が、結果すべて0になってしまいます。 SUMPRODUCT関数の使い方(考え方)はあっていると思います。(小さい表で使ってみると正しく計算されるため) たしかに、SUMPRODUCT関数は沢山計算しているので、大きな?表を集計するのに向かないのでしょうか? そのあたりがわかりません。 ただ、ピボットテーブルで同じものを作成すると、さくさく完成します。 こんな漠然とした質問でお答えいだけるのか不安ですが、どなたかお詳しい方よろしくお願いします。

  • 《Excel2000》SUMPRODUCT関数での集計、空白行がある場合は?

    SUMPRODUCT関数を使い、複数の条件に合致する行のみの数値を足し上げたいと思っているのですが、集計したい数字が入っている列にところどころ空白があるせいで、結果がエラーになってしまいます。 仕様の事情で、空白のセルに0などを入れることはできないのですが、この場合はどうすればいいでしょう? =SUMPRODUCT(($A$2:$A$100=1)*($B$2:$B$100=1)*($C$2:$C$100)) 現在はこのような式です。C列に空白セルがあります。

  • SUMPRODUCT関数について

    よろしくお願いいたします。EXCEL2013使用です。 上の画像、出張者リスト(名前、出発日、帰国日)から、別のシートに一目でわかる一覧表を作りたいのです。例えば、11/06-11/15まで出張だったとしたら、下の表で6日から15日までを黄色背景にする、等です。 下の表で、日付セルの下の各セルに次のような関数を入力しましたがうまく動作しません。 =SUMPRODUCT((リスト!$B$2:$B$300=$A4)*(INT(リスト!$C$2:$C$300)>=INT(B$2))*(INT(リスト!$D$2:$D$300)<=INT(B$2))) ※下の画像は12月ですが、その上に11月があり、上記関数内のセルのアドレスが間違っている訳ではありません。 SUMPRODUCT関数は大変便利なのでこれまで多用してきましたが、今回は完全に頓挫してしまいました。 どこがいけないのでしょうか。おわかりの方、是非ご教示下さいませ。 どうぞよろしくお願いいたします。

  • SUMPRODUCT関数 行が増えても自動で

    SUMPRODUCT関数 行が増えても自動で最終行を取得するには? エクセル2003です。 名前   サイズ みかん   S みかん   M りんご   S このような表があったら、 =SUMPRODUCT((A1:A4="みかん")*(B1:B4="S")) で、複数条件の個数が取得できますが、 行がどんどん増えていったときに、手動で A4・B4の部分を変更していくしかないのですか? それとも大体の行を見越して、 =SUMPRODUCT((A1:A100="みかん")*(B1:B100="S")) のようにするべきなのでしょうか? =SUMPRODUCT((A:A="みかん")*(B:B="S")) にしたらエラーになりました。 自動で最終行を取得したいのですが、できますか?

  • エクセル関数のSUMPRODUCTについて教えてください。

    複数条件を満たす合計を出したくて「SUMPRODUCT関数」を考え付いたのですが、「~で始まる文字」など曖昧な条件の時にはどのようにしたらよいのでしょうか? ワイルドカード文字(*)を使ってみたのですが、うまくいかず困っています。よろしくお願いいたします。 コード 摘要    収入 1   東組南東  100 1   北東組北西 150 1   東組北西  100  1   北東組南西 150 コード「1」で摘要が「東組」で始まる収入の合計を出したい場合には、どのような関数が考えられますでしょうか?

  • SUMPRODUCT関数の疑問

     ExcelでSUMPRODUCT関数を条件付きの合計を求めるのによく使っていますが、理解できない動作があります。  仮にA,B,Cが配列、b,cが定数として、A=aかつB=bの場合のCの合計を求めるものとします。 <式1>SUMPRODUCT((A=a)*(B=b)*C)→正しい計算結果 <式2>SUMPRODUCT((A=a)*(B=b),C)→正しい計算結果 <式3>SUMPRODUCT(A=b,B=b,C)→ゼロ <式4>SUMPRODUCT(1*(A=a),1*(B=b),C)→正しい計算結果  3つともすべて同じ計算結果が出てくると思いきや、<式3>だけが何故0になるのかが理解できません。  私は、理由が分からず、腑に落ちないまま<式1>の方法を使っています。  これは仕様上の問題なのか、詳しい理由が分かる方がいれば、解説をよろしくお願いします。  なお、私はExcel2000を使っていますが、Excel2002ではどうなるんでしょうか。

  • <EXCEL>条件に合うデータを抽出する関数

    EXCELで、条件に合うデータを抽出し個数を表示させたいと思っています。 ただしSUMPRODUCTなどの『複数条件の設定』ではなく、『特定の文字列を除く』 という形で設定したいのですが、そのような関数はありますか?

  • SUMPRDUCT関数でさらに複数条件

    こんにちは。このサイトでCOUNTIFの複数条件の関数を探して、SUMPRODUCTにたどりつきました。 しかし、さらにSUMPRDUCTで複数条件の関数が必要なため、下記のような関数を作成しました。 =SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$42)*('2007_4'!$M$1:$M$10000=H61))+SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$43)*('2007_4'!$M$1:$M$10000=H61))+SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$44)*('2007_4'!$M$1:$M$10000=H61)+SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$45)*('2007_4'!$M$1:$M$10000=H61)+SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$46)*('2007_4'!$M$1:$M$10000=H61)))) しかし、この合計値は887を超えるはずがないのですが、なぜか60133を返してきます。SUMPRODUCT関数を+でつなぎすぎているせいでしょうか。 ちなみに=SUMPRODUCT(('2007_4'!$I$1:$I$10000=H$42)*('2007_4'!$M$1:$M$10000=H61))だと55という正しい数字を返してきます。 初心者のため、きちんと理解していないのかもしれません。どうぞよろしくお願いいたします。

専門家に質問してみよう