• ベストアンサー

SUMPRODUCT関数 『複数条件』に当てはまらない個数

いつもお世話になっております。 【データ】    A    B     C   D 2   1     4      4 3   2     2     2 4   3    5     1 ・   ・   ・     ・    ・ ・ ・ というように1から5までの値が入っています。           A      B      C パターン1   A>=4    B>=4    C>=4 パターン2   A<2             C>=4 パターン3                  C<3 パターン4                 3=<C<4 『パターン1~4に当てはまらない』データのD列の合計を出したいのですが、 どのようにしたら出るのかわかりません。 ちなみに、上記のパターンは、AかつBかつCという条件になっています。 例えば、パターン1は、「Aが4以上かつBが4以上かつCが4以上」という意味です。 説明の仕方がわかりにくいと思いますが、どうぞ宜しくお願い致します。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.6

優先順に除外の条件整理すると パターン1' C>=4(パターン3,4の除外)[絶対条件] パターン2' A>=2(パターン2の除外)[C>=4が確定の絶対条件] パターン3' A<4,B>=4(パターン1の除外の1)[C>=4,A>=2が確定のB>=4の場合の条件] パターン4' A>=4,B<4(パターン1の除外の1)[C>=4,A>=2が確定のB<4の場合の条件] となるので パターン1'Andパターン2'And(パターン3'orパターン4')[パターン3',4'に重複範囲はなし]のDの合計なら =SUMPRODUCT((C>=4)*(A>=2)*((A<4)*(B>=4)+(A>=4)*(B<4)),D)

katakko
質問者

お礼

ご回答、ありがとうございます。 >((A<4)*(B>=4)+(A>=4)*(B<4)), パターン1'~パターン2' はわかったのですが、 こうやって書くのですね。。勉強になります。 これから試してみます。 また、知人から 『他の列にパターンのマークをつけて、どこにもマークがないものを集計したりとすればよいのではないですか』と助言を頂きました。 こちらも試したいと思います。 丁寧に回答していただき、とてもよく分かりました。 本当にありがとうございました。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

質問の書き方が稚拙。 >当てはまらない なら当てはまるほうを書く必要なく、直接当てはまるほうを書いたら(考えたら)。 NOT関数を使う手もあるかも知らない(未確認)が、凝らなくて良いと思う。 >AかつBかつCという条件になっています AND条件であればSUMPRODUCT関数では =SUMPRODUCT((A列条件表現)*(B列条件表現)*(C列条件表現)) と*を使うのは知っているのかどうか。知っているなら、今までやったパターンでも書いて質問したら。 質問する前にSUMPRODUCT関数の解説など読み、自分で試行してみるべきである。 ーー パターン1では A列条件表現 4以下  (A1:A100<4) B列条件表現 4以下  (B1:B100<4) C列条件表現 4以下  (C1:C100<4) これでデータが小数点数もあるらしいが、上記式で正しいか(該当するか)やってみて。 -- 条件が無い列文がしに部分の()をそっくり省略すればよい。 (パターン2,3,4など)

katakko
質問者

お礼

ご回答、ありがとうございます。 質問の書き方が稚拙で、申し訳ありません。。(イヤみで書いてるわけではありませんよ(笑)) >なら当てはまるほうを書く必要なく、直接当てはまるほうを書いたら(考えたら)。 考えたら一直線のところがありまして、 パターン1~4の場合のD列の合計をだしてグラフを作成していました。 そして、「ではパターン1~4に当てはまらないものは」というように 集計が進んで、頭の中が『当てはまらない・・・当てはまらない』となってしまったのです。 >*を使うのは知っているのかどうか。知っているなら、今までやったパターンでも書いて質問したら。 知っています。こちらでは、SUMPRODUCT関数について色々教えていただき、パターン1についてもSUMPRODUCT関数を使って計算しました。今、調べましたら、imogasiさんにも先日お世話になっていました!ありがとうございます! 紙に書きながら色々考えてから質問しましたが、自分が考えている範囲でも書けばよかったです。稚拙な質問となってしまいました。申し訳ありません。 >パターン1では、A列条件表現・・・ こちらは、A、B、Cは4以下ではない場合もあるのです。。それがまたごちゃごちゃしてしまって。 今回もご回答、ありがとうございました。 これからの質問の仕方にも気をつけたいと思います。

noname#176215
noname#176215
回答No.4

それだけ条件がはっきりしているのですから 条件を書き出して DSUM 関数で集計すればいいように思います。

katakko
質問者

お礼

ご回答ありがとうございます。 >それだけ条件がはっきりしているのですから そうですね。。 実際はもっと列が多いので、頭の中がごちゃごちゃしてしまいました。 考えてみます。 ありがとうございました。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.3

条件が成り立つ場合のSUMPRODUCT関数を書くことができるのであれば (全てのパターン数)-(条件の成り立つパターン数) でOK 条件部分は  (A>=4)*(B>=4)*(C>=4) + (A<2)*(C>=4) + (C<3) + (C>=3)*(C<4) で良いと思います ブール(Boolean)代数を覚えると、上記のような引き算をしなくてもSUMPRODUCT関数だけで条件を設定することができます。 また、複雑な条件も簡素にすることができるかもしれません。 ※例えば、パターン4は C=3 にすることができます (見た目に分かりやすくなることもありますが、数式から初期の条件を読み取れない場合もあります) これを機会にブール代数を覚えてみてはいかがでしょう。 ※SUMPRODUCT関数の記述方法についてはExcelのヘルプや解説サイト、解説書籍などを参照してください

katakko
質問者

お礼

ご回答、ありがとうございます。 申し訳ありません。私の説明不足でした。 値は、小数も入るのです。 >ブール(Boolean)代数を覚えると、上記のような引き算をしなくても>SUMPRODUCT関数だけで条件を設定することができます。 プール代数、覚えておきます。時間があるときに挑みたいと思います。 ありがとうございました。

noname#79209
noname#79209
回答No.2

#1です。 合っていませんね。

noname#79209
noname#79209
回答No.1

データは整数のみですよね? だとすれば、パターン4は「C=3」しかないですよね? つまり、C<=3ならパターン3,4に当てはまってしまいます。 従って、パターン1~4に当てはまらないのは、 少なくともC>=4です。よって AND(C>=4,OR(A<=3,B<=3)) では? 合ってるかな?

katakko
質問者

補足

ご回答、ありがとうございます。 >データは整数のみですよね? 申し訳ありません。私の説明不足でした。 小数もあるんです!!! パターン1~4に当てはまらないデータとして、    A    B     C   D 2  3.67   3.5    4.9 などがあります。 並べ替えをして手作業で調べました・・・・。 関数を使ってどうにか調べられないかと悩んでいます。。 ありがとうございました。

関連するQ&A

  • SUMPRODUCT関数 文字列を含んだ複数条件

    いつもお世話になっております。    A    B     C    D 2  1    4     4     4 3  2     2     2     4 4  3     -    -     - B列が4以上かつC列が4以上かつD列が4以上のA列の合計を出したいのですが、 =SUMPRODUCT((B2:B4>=4)*(C2:C4>=4)*(D2:D4>=4)*(A2:A4)) というようにすると、「4」と出てしまい、どうもうまく計算されません。 「-」が4以上に反応してしまい、どうしたらよいでしょうか? どうぞ宜しくお願い致します。

  • SUMPRODUCT関数 文字列を含んだ複数条件

    いつもお世話になっております。   A列  B列   C列 1  100  100    1 2  200   50     2  3  -   100     3  A列が100以上かつB列が100以上のA列の合計を出したいのですが、 =SUMPRODUCT((A1:B3>=100)*(B1:B3>=100)*(C1:C3)) とやっていも、どうもうまく計算されません。 「-」が4以上に反応してしまうのですが、 どうしたらよいでしょうか? どうぞ宜しくお願い致します。  

  • EXEL2000 複数条件で集計を求める関数式

    検索範囲のA列における検索条件が[A5001]セルと同じ値、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計は =SUMPRODUCT((A1:A5000=A5001)*(B1:B5000=B5001)*C1:C5001) では、検索範囲A列が検索条件が[A5001]セルと同じ値の文字列を含むもの、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計をする場合に (たとえば、リストの A列データの値は、青森リンゴ、長野リンゴ、和歌山ミカン等、 B列データの値は、大、中、小等、 C列データの値は、その売上高、 検索条件[A5001]セルの値が[リンゴ]、 [検索条件B5001]セルの値が[大]である場合に、 リンゴという文字列が含まれており且つ大であるものの売上合計金額を求める) =SUMPRODUCT((A1:A5000="*"&A5001&"*")*(B1:B5000=B5001)*C1:C5001) を試しましたがだめでした。 これとは別に、 =SUMPRODUCT(COUNTIF(A1:A5000,"*"&A5001&"*")/COUNTIF(A1:A5000,"*"&A5001&"*"))*(B1:B5000=B5001)*C1:C5001) も試しましたがだめでした(数日前にこちらで教えていただきまして、行数が10行程度の仮のリストで試しましたらうまくいきましたが、実際のリスト(5000行以上)では#VALUE!が返ります。リストは「値のみ貼付」で得られたデータのみが入っています) このリストで、5001行以降に検索条件が多数並んでいます。 EXEL2000で可能な関数式を教えて下さい。よろしくお願いします。

  • Excelで複数の条件の合計を出す

    excelでsumif関数ありますよね、ある範囲でA=Bなら合計するという。 このifの部分の条件を2つ以上設定する方法ありましたら教えてください。イメージとしては、A=BかつC=Dの場合のもののみある範囲の値を合計する。 素人ですみませんがよろしくお願いします。

  • Excel2002:複数条件のデータの個数の集計

    苦手な集計について質問させてください。 [A] [B] [1] AAA aaa [2] BBB bbb [3] AAA aaa [4] AAA bbb [5] BBB ccc 上記のようなデータで[A]と[B]のAND条件でみたときの個数を集計したいと思います。 例えば上記であれば、 [A]AAAかつ[B]aaa・・・2個 [A]BBBかつ[B]bbb・・・1個 [A]AAAかつ[B]bbb・・・1個 [A]BBBかつ[B]ccc・・・1個 になります。[B]のデータは[A]のデータに依存せず、[A]の各値にまたがっています。([B]bbbは[A]AAAと[A]BBBの場合があります) 実際のシートでは、全パターンを網羅したリストがA列とB列、集計対象がD列とE列にあります。 上記の例でいえば、以下のようになっています。 [A] [B] [C] [D] [E] [1] AAA aaa AAA aaa [2] AAA bbb BBB bbb [3] BBB bbb AAA aaa [4] BBB ccc AAA bbb [5] BBB ccc つまり[A]列と[B]列が組み合わせパターン、[D]列と[E]列が集計元データです。 ちなみにパターン数が414個、集計元データは29000個程度です。 そして最終的な各パターンの個数を[C]列に表示させたいと思います。 VLOOKUPやピボットテーブルを考えましたが、ピンと来ません。 適切なやり方を教えてください。よろしくお願いします。

  • ファイルメーカーで複数条件データを抽出する方法

    filemaker で、複数条件のデータ抽出を行いたいのですがその方法が分かりません。 フィールドAとフィールドBにそれぞれaまたはb、cまたはdの値が入力される場合、aかつc、aかつd、bかつc、bかつdの件数を求めたいと 考えております。 =Exact(A;"a")and Exact(B;"c")のように入力してみましたがうまくいきませんでした。 知恵をお貸し頂ければ幸いです。 宜しくお願い致します。

  • 【SUMPRODUCT】について

    下記リストと条件で価格を算出したいのですが、A列の「7」以外の数字まで反映された値がかえってきてしまいました。適切な関数を使用しているかも不明です。 アドバイスのほどお願いいたしますm( _ _)m --------------------------------------------------------------- セル A列 B列 C列 D列 E列 1 5 A リンゴ店 TEL \100 2 5 B ミカン店 FAX \200 3 7 C リンゴ店 TEL \100 4 7 A ミカン店 FAX \200 5 7 B リンゴ店 TEL \100 6 7 C ミカン店 FAX \200 --------------------------------------------------------------- <条件> A列 「7」 B列 「B」と「C」 C列 「ミカン」を含む D列 「FAX」以外 <作成した数式>(かえってきた値は上の条件とは相反したデータで、恐らくA列の「7」以外の数字も含んでいるようです・・) =SUMPRODUCT((A$2:A$10=7)*(B$2:B$10="B")*(B$2:B$10="C")*(E$1:E$10)) +SUMPRODUCT((A$2:A$10=7)*ISNUMBER(FIND("ミカン",C$1*C$10))*(E$1:E$10))+SUMPRODUCT((A$2:A$10=7)*ISERROR(FIND("FAX",D$1:D$10))*(E$1:E$10)) 以上、質問が長くなってしまい申し訳ありません。 ご教授のほどどうぞ宜しくお願いいたします。

  • 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と出ます。 条件範囲のエラー値をどうにかしなければだめなのでしょうか? それとも根本的に数式が間違ってるのでしょうか? よろしくお願いいたします。

  • Excel)SUMPRODUCT関数で・・・

    今まで困ったときにこちらで色々調べて答えを見出していた者です。 いつも参考にさせていただきありがとうございます。 ついに、うまいこと調べたいことが見つけ出せなくなってしまったため質問をさせてください。 ■基データ    A     B    C      D    ――――――――――――――――――――― 1 氏名   形式   内容    金額 2 やまだ   A   りんご   50,000 3 さとう   B   バナナ    8,000 4 やまだ  (A)  みかん  ▲30,000 5 すずき   B   もも     6,000 6 たなか   C   ぶどう    5,000 7 さとう  (B)  キウイ   ▲4,000 というデータがあるとします。(明細みたいなもの) これを氏名(A列)と形式(B)列の条件で金額(D列)の合計を 別の表(集計表みたいなもの)に結果を出したいと思っています。 以前こちらで調べて、「SUMPRODUCT」関数が適していると思い 試してみました。そして結果も得られていました。 ですが、条件がちょっと複雑になってしまい、その関数での 対応が可能かどうかお知恵をお貸しいただきたいと思います。 または、別の方法(ピボットテーブルは対象外とさせてください) がありましたらご教示下さい。よろしくおねがいします。 【今までの条件設定(結果表示したいセルへの入力式)】  <氏名がやまだで形式がAの場合の金額の合計>  =SUMPRODUCT(($A$2:$A$7="やまだ")*($B$2:$B$7="A"),$D$2:$D$7)   ※さとう・すずき・たなかもそれぞれ求めます。   ※形式B・Cもそれぞれ求めます。(そして当初は形式に「()」の表示はありませんでした。) 【条件の変更によって結果を求めたいこと】  ■氏名別は変わらず、形式は「()」のあるなし関わらず   [Aも(A)も同じ扱い]として金額の合計を求めたい。   上記の場合ですと、「やまだのA・(A)の合計値」と   「さとうのB・(B)の合計値」を算出する数式を知りたいです。 Bookの特徴ですが、   ・結果を出させるセルは同一シート内にあり、また印刷時は同一用紙に表示させる  ・結果を出させるセルは見栄えの問題で結合させてある という具合です。。。 何かよい方法はありますでしょうか? 宜しくお願いいたします。

  • 【EXCEL】複数判定条件

    A列-B列-C列 10-A- 3-A- 4-B- 5-B- 上記データがあるとします。 C列に下記の条件で値を入れたいのです。 ----------------------------------- 「B列が"A"かつA列が"3"以下もしくは B列が"B"かつA列が"4"以下」 上記どちらかの条件を満たせばC列に"○"を入力 ----------------------------------- この場合C列にどういう関数式を入れれば宜しいでしょうか。 力をお貸し下さい。

専門家に質問してみよう