Excel2000で複数条件集計をする方法

このQ&Aのポイント
  • Excel2000を使用して複数条件の集計を行いたい場合、SUMPRODUCT関数を使用することができます。指定した条件を満たすセルの合計を取得することができますが、数値の範囲に時間の変換式が組み込まれている場合、集計結果に「#NUM」と表示されることがあります。
  • 集計結果に「#NUM」が表示される場合、ISERROR関数を使って「#NUM」を無視するような式を組み込むことができます。具体的には、SUMPRODUCT関数の結果がエラーの場合、代わりに0を表示するような式を書くことができます。
  • また、検索範囲が日々変化する場合は、範囲設定を動的に行うことができます。具体的には、範囲の最終行を自動的に取得する関数を使って、範囲設定を行うことができます。
回答を見る
  • ベストアンサー

SUMPRODUCT 「#NUM」を回避して集計

関数初心者です。Excel2000を使用しています。 前回の質問でSUMPRODUCT関数を使って複数条件の集計について質問しました。 この集計に関して、また新たに一つ問題が発生し模索中です。 集計したいのは複数条件 例) 2012/3/3 12:10:50 りんご 50  日付 と 商品名 を条件とし 数値 の合計を出したいです。 前回の質問で回答して頂いた =SUMPRODUCT((INT(B6:B12)=INT(B3))*(C6:C12=C3),D6:D12) この式を使って集計をしたいのですが、 数値の範囲(D6:D12)にはすべて時間を分単位に変換するよう =HOUR(N4-O4)*60+MINUTE(N4-O4) の式が組み込まれていて、必ず1ヶ所に「#NUM」が表示されます。 この「#NUM」があるが為に集計結果がすべて「#NUM」となってしまいます。 どちらの式でも =(IF(ISERROR~ 等を試してみましたが、やはりうまくいきませんでした。 勉強不足の為、使い方の認識が根本的に違っているのかもしれません。 希望としては前式 =SUMPRODUCT((INT(B6:B12)=INT(B3))*(C6:C12=C3),D6:D12) に「#NUM」を回避(無視)して集計出来るような式を組み込んで処理したいのです。 ちなみに検索範囲共は日々不規則に変化し上書きすることがないため (D6:D1000)くらいで範囲設定をしておきたいのです。 説明がわかりにくくて申し訳ありません。 アドバイスをよろしくお願いします。

noname#244523
noname#244523

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

とりあえず出来る方法としては =SUM((INT(B6:B1000)=B3)*(C6:C1000=C3)*IF(ISNUMBER(D6:D1000),D6:D1000,0)) をCtrl+Shift+Enterで入力すると,できます。 もちろん既に寄せられているアドバイスの通り,D列のエラーを事前に解消しておくのが最適なのは言うまでもありません。 また計算できることが目的じゃなくSUMPRODUCT関数が使いたいご質問だったときは,他の方のアドバイスをお待ち下さい。

noname#244523
質問者

お礼

ご回答ありがとうございます。 上記の式で完璧な動作をしてくれました。 SUMPURODUCTにこだわっていたのではなく、Excel2000でSUMIFSが使えず、複数条件で検索するとSUMPRODUCTを勧めるサイトが多かったために一番有効なのだと思い込んでおりました。 普段全く関数を使う機会がないので戸惑っておりましたが、たくさんの方に回答して頂きとても感謝しております。 直接的に解決へと導いて下さいましたkeithinさんの回答をベストアンサーとさせて頂きます。 本当にありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

D列には =HOUR(N4-O4)*60+MINUTE(N4-O4) のデータが有ってそれの集計をするとのことですか? それにしても上の式は正しいのですか? N4やO4のデータは時間の入ったデータになっているのですね。でしたら次のような式にしてエラーの表示を無くすようにすることでしょう。 例えば =IF(COUNT(N4:O4)<>2,"",IF(N4>=O4,HOUR(N4-O4)*60+MINUTE(N4-O4),0)) 又は =IF(COUNT(N4:O4)<>2,"",IF(N4>=O4,HOUR(N4-O4)*60+MINUTE(N4-O4),HOUR(O4-N4)*60+MINUTE(O4-N4)))

noname#244523
質問者

お礼

ご回答ありがとうございます。 D列のエラーを表示しないようにすることが一番の近道だと思います。 諸事情によりなるべくD列の式には手を加えず解決をしたかったのですが、最終的にその方法も試行してみました。 結果は惨敗でしたが(笑) 教えて頂いた式も大変参考になりました。 今後に活かしたいと思います。 ありがとうございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

まずは、 > 必ず1ヶ所に「#NUM」が表示されます。 これの原因を調べ、対策を取る方が簡単です。 > どちらの式でも =(IF(ISERROR~ 等を試してみましたが、やはりうまくいきませんでした。 > 勉強不足の為、使い方の認識が根本的に違っているのかもしれません。 どうやって記載したのかが書かれていないので、違っているかどうかも判断できません。 でも、間違っているのは「使い方」ではなく、エラーをそのままにしておくという「考え方」ですよ。

noname#244523
質問者

お礼

ご回答ありがとうございます。 ご指摘はごもっともです。 いろんなサイトを参照し試行していたので経緯を書くとだいぶ長くなってしまうと思い割愛させて頂きました。 データ参照範囲は別の人が作った式だったので、なるべく手をつけずに解決する方法を模索しておりました。 まずは、エラーを出さないようにすること。 この考え方はしっかり今後に活かしたいと思います。 ありがとうございました。

関連するQ&A

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

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

  • エクセルにおいての配列関数について

    エクセル の配列関数のSUMPRODUCT使用して このような式を書いた場合 SUMPRODUCT((条件1)*(条件2)*・・・(条件n)*(集計範囲)) =SUMPRODUCT((A1:A30=50)*(B1:B30=750)*(C1:C30=6600)*(D1:D30=210)*F1:F30) 集計範囲の行 いわゆるFの行の数字の中の一つのセルに 「3」などのカッコを使用した ものをいれると "#VALUE!" と表示され正しい答えが出ないのですが 解決方法を教えてください。 よろしくお願いします。

  • SUMPRODUCT関数で困っています

    エクセル2007にて、SUMPRODUCT関数を使ってデータ集計をしたいが 下記の現象で困っています。 SUMPRODUCTの特徴として参照先(sheet1)の指定範囲 「($B$2:$E$6)の範囲を($B$2:$G$20)」を変更すると SUMPRODUCT関数がn/aになり値が表示できない。 (やりたいこと) sheet1に元データが入力されています。    A    B    C    D    E 1 NO 社名 商品 購入日 金額 2 01 A商事 肉 1/3 50円 3 02 B電気 野菜 1/10 70円 4 02 B電気 肉 1/12 50円 5 03 C工業 魚 1/20 60円 6 03 C工業 肉 1/30 50円 sheet2はsheet1より必要なデータを、NOをキーにして、 社名・商品・金額を VLOOKUP関数にて取ってきて表示しています。    A    B    C    D    E 1 NO 社名 商品 金額 2 01 A商事 肉 50円 3 02 B電気 野菜 70円 4 02 B電気 肉 50円 5 03 C工業 魚 60円 6 03 C工業 肉 50円 6 03 C工業 鉄 90円 sheet3はsheet2より必要なデータを、NOをキーにしてSUMPRODUCT関数にて取ってきて表示しています。 次の式をB1に入力しています (=SUMPRODUCT((sheet2!$A$2:$A$6=A2)*(sheet2!$B$2:$B$6=B2<>"鉄")*(sheet2!$D$2:$D$6=D2))    A    B    C    D    E 1 NO 金額 2 01 50円 3 02 120円 4 03 110円 sheet3はsheet2より必要なデータを、NOをキーにしてSUMPRODUCT関数にて取ってきて表示しています。 次の式をB1に入力しています (=SUMPRODUCT((sheet2!$A$2:$A$6=A2)*(sheet2!$B$2:$B$6=B2"鉄")*(sheet2!$D$2:$D$6=D2))    A    B    C    D    E 1 NO 金額 2 03 90円

  • SUMPRODUCT 複数条件と日付

    関数初心者です。Excel2000を使用しています。 SUMPRODUCT関数を使って複数条件の集計をしたいのですが、どうしても日付の列に反応してくれません。 おそらく原因はデータ元となる日付に時間まで入っているからではないかと思っています。 日付が入力されているセルのデータは 例) 2012/3/3 12:10:50 → セルの書式設定は 時刻のみ 12:10:50 集計したいのは複数条件 例) 2012/3/3 12:10:50 りんご 50  日付 と 商品名 を条件とし 数値 の合計を出したいです。 秒単位で時間計測しているのでこのデータ自体の変更と書式設定の変更は出来ません。 =SUMPRODUCT((B6:B12=B3)*(C6:C12=C3),(D6:D12)) B3のセルに「3/3」もしくは「2012/03/03」の入力で拾えるようにしたくて、 過去のの質問など参考にし(B6:B12=B3)の部分を変更しましたが、うまくいきませんでした。 やってみたことが的外れだったのかもしれません。 また、日付を条件とした場合、書式設定も影響されるのでしょうか? アドバイスをよろしくお願いします。

  • EXCELのSUMPRODUCTでエラーになります

    複数の条件を用いて集計をするのにSUMPRODUCTを使おうとしたら #VALUEエラーになります。 SUMPRODUCT((条件1)*(条件2)*(条件3)*(集計列))にすると #VALUEが出て、大かっこをはずすと0が返ります。 Oも答えではないので式が違っていると思われますが、 大かっこをつけると#VALUEが返るのが納得いきません。 宜しくお願いします。

  • SUMPRODUCT関数について

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

  • SUMPRODUCTでエラーになってしまいます。

    関数を少しづつ勉強しながら集計表作成の業務を同時進行しています。 初心者です。 今作ってるのは複数条件の合計金額を求めたくて、 SUMPRODUCT(('4月'!D4:D38="*"&$C135&"*")*('4月'!$H4:H38=C58)*('4月'!E4:E38)) を作ったのですが、どうやらSUMPRODUCTだと「~を含む」の機能が使えないみたいなので 色々調べて SUMPRODUCT((ISNUMBER(FIND($C$135,'4月!$D$4:$D$38)))*('4月!H4:H38=C61)*('4月!E4:E38)) が完成しました! そして、更に右にコピーするとシートの月も5月、6月・・と変わるようにしたかったので 前回ここで教えてもらった関数を参考に SUMPRODUCT((ISNUMBER(FIND($C$135,INDIRECT(MOD(COLUMN(C1),12)+1&"月!$D$4:$D$38))))*(INDIRECT(MOD(COLUMN(C1),12)+1&"月!H4:H38=C61))*(INDIRECT(MOD(COLUMN(C1),12)+1&"月!E4:E38))) を作りました。 でも・・・エラーになってしまうのです。 セルにエラー表示がされるのではなく正しく直るまで「修正しなさい」って出るバージョンの エラーです。。。。 もう何がいけないのかさっぱりで・・・・・ あと一番上の原型の関数からなのですが、セル番地を列で指定したいのですが、 D:DとかH:Hにするとセルのエラーになってしまいます。 こちらも何でエラーになるのかわからなくて困っています。 どなたか詳しい方教えて下さい。

  • SUMPRODUCTについて

    A~Dのデータがすべて一致したらE列を合計する関数をつくりました。 C列にはVLOOKUP関数が入っており、合計のE列にもただの足し算が入っております(#N/Aと出てるデータもあります)。 別シートに =SUMPRODUCT((マスター!A2:A100="10A")*(マスター!B2:B100="H")*(マスター!C2:C100="A5")*(マスター!D2:D100=8)*マスター!E2:E100) と入れたら#N/Aと出ます。 条件範囲のエラー値をどうにかしなければだめなのでしょうか? それとも根本的に数式が間違ってるのでしょうか? よろしくお願いいたします。

  • SUMPRODUCT関数の値としての#NUM!

    Sheet2のB2に、 =SUMPRODUCT((A2=Sheet1!A:A)*1) というような式を入れると、#NUM!が出ます。 Sheet2のA2と一致する、Sheet1のA列の値の個数を求めるにはどうすればいいでしょうか(もっといえば、一致する行のK列の合計を求めたい)。 うえの簡単な式のどこがまちがってるのかわからなくて困ってます。

  • 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関数は大変便利なのでこれまで多用してきましたが、今回は完全に頓挫してしまいました。 どこがいけないのでしょうか。おわかりの方、是非ご教示下さいませ。 どうぞよろしくお願いいたします。

専門家に質問してみよう