[関数] 複数条件を指定し複数列の範囲から集計する

このQ&Aのポイント
  • Windows7 Pro 64bitのExcel2010で、複数条件で範囲の集計方法についての質問です。
  • 指定の条件で果物の数を集計するために、SUMPRODUCTやSUMIFS、INDEX関数を試してみましたがうまくいきません。
  • どのようなコードを使えば、C1:E8の範囲全体で集計することができるでしょうか?
回答を見る
  • ベストアンサー

[関数] 複数条件を指定し複数列の範囲から集計する

こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 タイトルが分かりづらくて申し訳ありませんが、詳細は下記ご参照ください。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと 下図のA1:E8のようなリストがあります。 H1:H4に指定の条件で果物がいくつあるのか計算したいのですが、集計の範囲にはC1:E8ないしリスト全体を指定したいのです。(D1:D8にしたくない) 自分でもSUMPRODUCT(SUMIFS)関数やINDEX関数で考えてみたのですが、完成には至っていません。 この場合、どのようなコードが適していますでしょうか? 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

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

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

>この場合、どのようなコードが適していますでしょうか? コード? 関数の組み合わせで算出可能です。 H5=SUMIFS(INDEX(C2:E8,0,MATCH(H3,C1:E1,0)),B2:B8,">="&H1,B2:B8,"<="&H2,A2:A8,H4) 尚、元データの1行目は項目名(フィールド名)なので集計範囲はC2:E8が適当かと思います。 どうしてもC1:E8の範囲にするのであれば別の数式を考えなければなりません。(かなり面倒になる)

rihitomo
質問者

お礼

失礼しました。 VBAの質問をすることが多いので間違えてしまいました。 関数のご提示ありがとうございます。 こちらの要望どおりです。

その他の回答 (1)

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

一例ですが =SUMPRODUCT(($A$2:$A$100=$H$4)*($B$2:$B$100>=$H$1)*($B$2:$B$100<=$H$2)*(($C2:$C100*($H$3="りんご"))+($D$2:$D$100*($H$3="ばなな"))+($E$2:$E$100*($H$3="みかん"))) =CHOOSE(MATCH($H$3,$C$1:$E$1,0),SUMIFS($C:$C,$A:$A,$H$4,$B:$B,">="&$H$1,$B:$B,"<="&$H$2),SUMIFS($D:$D,$A:$A,$H$4,$B:$B,">="&$H$1,$B:$B,"<="&$H$2),SUMIFS($E:$E,$A:$A,$H$4,$B:$B,">="&$H$1,$B:$B,"<="&$H$2))

rihitomo
質問者

お礼

できました。 ありがとうございます。

関連するQ&A

  • [関数] 集計用の関数について

    こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ■やりたいこと 図のような元リスト(A1:F13)があり、それを人ごとのリスト(H1:L13)で集計したい。 I2:L13に関数を入力し集計したいのですが、どのような関数を入れればいいか教えていただきたい。 ■定義と条件 ・A列の日付とB列の項目を結合した値はユニークです(5月1日のりんごは1行しかないことは担保されています) ・同様にC1:F1の値もユニークです ・元リストの条件指定の引数で(C2:C13)は使いたくない  (人ごとにシートがあるので、H1の値によって取得する値を変えたい) このような場合どのような関数を使えばよいでしょうか? 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • [関数] 指定の範囲を乗算したものを加算する

    こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 タイトルが分かりづらくて申し訳ありませんが、詳細は下記ご参照ください。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと 下図のA1:G6のようなリストがあります。 F列の合計はSUM関数で求めればいいのですが、G列のポイント合計を ・作業行や作業列を作らず ・関数内で範囲で指定 して作りたいのです。(例では4列ですが、実際にはもっとたくさんの列があるため) B3:E3の一つ一つのセルに対してB2:E2のセルを乗算した値を加算するような関数はありますでしょうか? ピボットやVBAなどではなく関数で実現したいです。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • [関数] 行列でそれぞれ条件を指定し平均を算出する

    こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 タイトルが分かりづらくて申し訳ありませんが、詳細は下記ご参照ください。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ■やりたいこと 下図のA1:H9のようなリストがあり、下記条件でB2:C9の範囲の平均を出したいのです。 ・A列が0以外 ・1行目が0以外 ・作業列(行)は作らない ・関数で実現する excel2007から追加されたAVERAGEIFS関数が使えるかと思ったのですが、平均対象範囲は単列(もしくは単行)しか指定できないようです。 この場合、どのような関数が適していますでしょうか? 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • [関数] 集計用の関数についてご教示ください

    こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと 図のようなリスト(A3:G7)があり、りんごやバナナなどの項目ごとに誰がいくつか集計したい(A11:C14) B12:C14の範囲に関数を入力して数字を導き出したいのですが、 その際の関数の範囲はA4:G7を指定したいのです。 (りんごの列の関数の範囲はA4:G5、ばななの列の関数の範囲はA6:G7という風に分けたくない) Aに1列追加して A4=りんご担当 A5=りんご個数 というような集計用の列を作成することは可能です。 このような場合どのような関数を使えばよいでしょうか? もし可能であれば集計用の列を追加した場合としない場合、両方の関数を教えていただければ幸甚です。 (集計用の列をどのような値にするかも併せて教えていただけますでしょうか) 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • 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という正しい数字を返してきます。 初心者のため、きちんと理解していないのかもしれません。どうぞよろしくお願いいたします。

  • 【Excel】指定する項目のみ集計したい

    はじめまして。 書籍やネットで調べてみたのですがどうしても分からず質問させて頂きました。 Excelにおいての集計に関する質問です。 sheet Aには以下のようなデータがあったとします。 山田太郎:りんご :1 山田花子:さくらんぼ :1 山田花子:バナナ :1 山田太郎:みかん :1 山田太郎:新幹線 :1 山田太郎:パパイヤ :1 山田花子:消防車 :1 山田太郎:電車 :1 山田太郎:キウイ :1 このデータの果物だけの個数をsheet Bに名前ごとに集計は可能でしょうか 山田太郎:6 山田花子:3 ではなく、 山田太郎:4 山田花子:2 のように。 ちなみに、集計したい項目の果物のリストは、sheet Cにあります。 フィルターをかけて、必要のないデータを集計から除外しようとしましたが、データ量が膨大なため難しいです。 各データ項目の横に数値の1があるため、それを用いsumifs関数も試しましたが、果物のリストの部分でうまく条件指定ができず、上手く行きませんでした(0になりました。) 拙い説明で申し訳ございませんが、何卒ご教示頂けますと幸いです。 よろしくお願い致します。

  • エクセルの関数複数条件にあう集計のしかた

    困っております。。教えてください。 アンケートの集計表を作りたいのです。 例えば、下記のようなアンケート結果がありまして 10代満足は1、10代その他は1といったような集計ができる関数を作りたいのですが SUMPRODUCT=((A1:A4=”10代”)*(B1:B4=”満足”)) といったような式をつくりました。ですが、B列の回答が複数ある場合 30代満足は1、30代その他は1と集計したいのですが 上記関数では集計できません。回答結果は複数の組み合わせがあり2つだったり、3つだったりもします。(1つのセルの入力されています。) 回答結果を1つ1つのセルにわけないとダメでしょうか? 分ける場合はまたよい方法はありますでしょうか? わかりにく説明で申し訳ないのですが、どなたかご教示いただけると幸いです。。 よろしくお願いいたします。     A  B 1 10代 満足 2 20代 不満 3 10代 その他 4 30代 満足、その他

  • 複数条件での期間範囲指定について

    A列   B列    C列   D列 木村 2012/4/1 りんご 100 佐藤 2012/4/1 バナナ 100 木村 2012/4/2 バナナ 200 小林 2012/4/2 りんご 150 佐藤 2012/4/12 りんご 150 木村 2012/4/15 りんご 200 木村 2012/4/30 りんご 100 佐藤 2012/4/30 バナナ 150 上記の表で、 木村さんのりんごの売上を求めるのであれば、 SUMPRODUCTを使用し、下記のような数式にしていました。 =SUMPRODUCT((A1:A8="木村")*(C1:C8="りんご")*D1:D8) これに期間指定を入れた場合の数式はどのようになるか分かりません。 例えば2012/4/15~2012/4/30の木村さんのりんごの売上はどのように求めるのでしょうか? よろしくお願いいたします。

  • 【Excel】複数条件の合計

    Excel2003を使用しています。 Sheet1のD7:D200に『あ』、G7:G200に2(数値)、と入力されているH列の合計をSUMPRODUCT 関数を使用して計算しました。 同じ条件で、範囲の最終行数をあるセルに取り出しておいて、INDIRECT 関数を組み合わせたのですが、うまくいきませんでした。 数式は、Sheet2に下記のように入力してみましたが、このような使い方は間違っているのでしょうか? =SUMPRODUCT((Sheet1!D7:INDIRECT("D"&F1)="あ")*(Sheet1!G7:INDIRECT("G"&F1)=2)*(Sheet1!H7:INDIRECT("H"&F1))) また、他にこんな方法があるというのがあれば、あわせて教えていただけると嬉しいです。 よろしくお願いします。

  • IF関数 複数条件の指定

    関数の初心者です。。 仕事のルール変更にともなって、前任者が使っていた関数を変更しなければありません。(前任者はもういないので。) 色々がんばって試してみてもエラーになってばかりです。。。 AND関数なのかなんなのかさえよく分からない状況です。 質問自体もよく分からないかも知れませんが、どのように関数を変更すればよいかご教授いただけないでしょうか。 何卒よろしくお願いいたします。 ■関数の参照先の表示されているデータ C列:平日 or 休日 D列:null or 有休 or 欠勤 E列:出勤なし or 09-16 or 10-17(勤務時間) F列:例 09:02(出勤時刻) H列:例 18:05(退勤時刻) ■関数を変更したい表 U列:勤務時間「09-16」の表  W列:勤務時間「10-17」の表 ■元関数 =IF($C○="平日",IF($D○="有休","",IF($D○="欠勤","",IF($E○=$U$1,IF($F○="","出勤エラー",IF($H○="","退勤エラー",1)),""))),"") ■変更したい内容 D列が有休となった場合、「1」を表示させる。 ただし、勤務時間毎の列がある(Uが「09-16」、Wが「10-17」)ので、勤務時間と合っているセルのみ「1」と表示させたいです。 ■失敗した関数 U列だけ下記にしたら、OKでした。 =IF($C○="平日", IF($D○="有休","1", IF($D○="欠勤","", IF($E○=$U$1, IF($F○="","出勤エラー", IF($H○="","退勤エラー",1)),""))),"") でも、さらにW列に同じような式にすると勤務時間が違うのに、「1」と表示されました。 長くて分かりづらい質問だと思いますが、何卒よろしくお願いいたします。

専門家に質問してみよう