Excelで複数条件を使用して平均値を求める方法は?

このQ&Aのポイント
  • Excelの複数条件平均値計算方法について教えてください。
  • 上段のセルに複数条件がある場合に、下段の平均値を求めたいです。
  • 具体的なデータと条件を示し、解決方法を教えてください。
回答を見る
  • ベストアンサー

同一行で複数条件を検索して値の平均値を求めたい

みなさん教えてください。 タイトルでは上手く書けなかったのですがExcelで下のようなデータがあります。 1,みかん,I,I,I,II,II,II,III,III,III,III 商品コード,231,3,3,5,6,3,4,1,7,2,9 この様なデータが1万件程度あります。 このデータを基に平均を求めたいのですがその条件が上段のセルに”I”が入っている下段の平均値(この場合は3,3,5の平均値)、次に上段に”I”と”II”が入っている下段の平均値(この場合は3,3,5,6,3,4の平均値)、最後に上段”I”と”II”、”III”が入っている下段の平均値(この場合は3,3,5,6,3,4,1,7,2,9の平均値)です。 商品名の後ろのI~IIIは商品によってデータ数が変動します。 上段に”I”のみ入っているデータの平均値は =averageif(C3:L3,"I",C4:L4)で出来ましたが、同一行に複数条件を入れる場合 =averageifs(C4:L4,C3:L3,"I",C3:L3,"II")ですると#DIV/0!が返されました。 どのように関数を入れたらよろしいのでしょうか? よろしくお願いします。 PCはwindowsXP、Excelは2010を使用しています。

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

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

『I「または」II』のような重ねは,AVERAGEIFS関数では計算できませんので,次のようにする必要があります。 =SUMPRODUCT(SUMIF(C3:L3,{"I","II"},C4:L4))/SUMPRODUCT(COUNTIF(C3:L3,{"I","II"})) =SUMPRODUCT(SUMIF(C3:L3,{"I","II","III"},C4:L4))/SUMPRODUCT(COUNTIF(C3:L3,{"I","II","III"})) #敢えて言うと 「IまたはIIまたはIII」は「全て」と読み替えてAVERAGE(C4:L4)で計算する事は可能です 「IまたはII」は「IIIではない」と読み替えて,=AVERAGEIF(C3:L3,"<>III",C4:L4)と計算する事は可能です。

koba28
質問者

お礼

keithin様 ありがとうございます。 やはり1個の関数で済ますことはできないのですね。 分かりやすい説明、考え方ありがとうございました。

その他の回答 (2)

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

例えばC3セルから右横セルにI、IIなどが有り、その下の行に数値が有るとして C5セルからE5セルにかけてIのみの平均、IとIIの平均、IIとIIIの平均を表示させるとしたらC5セルには次の式を入力してE5セルまでドラッグコピーします。 =IF(COLUMN(A1)=1,AVERAGE(INDEX($C4:$X4,1):INDEX($C4:$X4,COUNTIF($C3:$X3,"I"))),IF(COLUMN(A1)=2,AVERAGE(INDEX($C4:$X4,1):INDEX($C4:$X4,COUNTIF($C3:$X3,"I")+COUNTIF($C3:$X3,"II"))),AVERAGE(INDEX($C$4:$X4,COUNTIF($C3:$X3,"I")+1):INDEX($C$4:$X$4,COUNTIF($C$3:$X$3,"I")+COUNTIF($C3:$X3,"II")+COUNTIF($C3:$X3,"III"))))) 数値が小数点以下に多くなる場合には小数点以下の表示桁数を減らす操作をすればよいでしょう。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

AVERAGEIFSの検索条件はandです。 つまり、貴方の式↓ =averageifs(C4:L4,C3:L3,"I",C3:L3,"II") は、上段が「I」「II」両方の条件を満たす場合の平均を出そうとしているので、該当なしとなり#DIV/0! を返しています。 これを回避する方法として2案提示ます。お好きな方をどうぞ。 「III」以外の平均を出す。 =AVERAGEIFS(C4:L4,C3:L3,"<>III")  配列数式を使う。↓Ctrl+Shft+Enterで確定する事。 =AVERAGE(IF(ISNUMBER(MATCH(C3:L3,{"I","II"},0)),C4:L4))

関連するQ&A

  • Office 365 Excelでの平均値

    =AVERAGEIFS関数を使って、 =AVERAGEIFS(G6:G266,J6:J266,K6) 上記のように作りましたが、「0(ゼロ)」を除き平均値を出そうと思い、 "<>0" を真ん中に入れたり、最後に入れてみたりしましたができませんでした。 AVERAGEIFS関数を使った場合のゼロを除いた平均の出し方を教えていただけると助かります。 ちなみにAVERAGEIF関数では、 =AVERAGEIF(G3:G262,"<>0") と書いたらできました。 よろしくお願いいたします。

  • エクセルにて複数の条件から検索できますか?

    業務の関係で検索できるよう依頼を受けました。 先ほども質問させてもらいましたが、私の説明不足でしたので、再度説明させてもらいました。 質問につきましては添付の画像を使い説明させてもらいます。 C3とC4に数値を入力すると、C7とC8に数値を表示できるようにしたいと考えています。 元データはI4からM11となります。 高さはIだけですが、許容衝撃はJのMAXもしくはKのMIINの中の数値と合致したらとなりますので、 C3・C4の数値がIとJもしくはKの数値が合致したら返すようにしたいと考えています。 わたしくのエクセル知識が足りてないのでご教授をお願い致します。

  • エクセルのaverage関数について

    エクセルである条件を満たすデータの平均値を求めたいと思っております. 例えば,データと条件は以下の場合, データ R 1 R 2 S 3 S 4 T 5 T 6 条件 一列目がRまたはSの場合 averageif関数では,条件は一つしか使えないので,RorSという複数の条件があるときは出来ないと思い,averageifs関数を使って求めようと思ったのですが,うまく計算してくれません. どのように関数で,どのように引数を決めれば良いか教えてください.

  • エクセルで複雑な条件で平均値を求めたい

    皆様初めまして。 エクセルを使って、以下の平均値を求めたいのですが、計算式の組み合わせが よく分からず困っております。 AVERAGEIFとCOUNTIFをうまく組み合わせればいいのではないかと 思っておりますが、条件が複雑でうまくいきませんでした。 よい方法をご存じの方がいらっしゃれば、アドバイスをお願いします。 (例)添付画像の一覧表を元に説明します。 「I」2列は以下の範囲より「田中さん」の「取次ぎ」項目だけを合計し その値の平均値を求める。 (項目)  「D」2列~「D」21列 (氏名)  「B」2列~「B」21列 (対応時間)「C」2列~「C」21列 「I」8列は以下範囲より「H」2列~「H」7列の 各対応時間の合計値を平均値として計算する。 (項目)  「D」2列~「D」21列 (氏名)  「B」2列~「B」21列 (対応時間)「C」2列~「C」21列 説明が分かりにくいですが、よろしくお願いします。

  • 条件1つで複数の値を抽出することはできませんか。

    エクセルのことなのですが、条件1つで複数の値を抽出してきたいと思っています。 しかし、様々な本やインターネットのサイトを参照したのですがうまくできません。 内容なのですが、「シート1」というシートがありこのシートを「シート2」のように番号で分けて、横に並べるようなシートを作りたいと思っています。 シート1 番号 品目 100 A 100 B 101 C 101 D 101 E 101 F 101 G 101 H 101 I 102 J 103 K 103 L シート2 番号 品目 100 A B 101 C D E F G H I 102 J 103 K L すみませんが教えていただけないでしょうか。 よろしくお願いします。

  • averageif関数について

    №  氏名    売上   順位 1  ○○○○ 11111   1 2   ×××× 22222   2 3 △△△△ 33333 3 4 □□□□ 44444 4 5 ◇◇◇◇ 55555 5 このような売上順位表があり、10人分データがある場合、 averageifを使って上位3名の売上平均を出す場合 =AVERAGEIF(D2:D11,"<=3",C2:C11) 下位3名の売上平均を出す場合 =AVERAGEIF(D2:D11,">=8",C2:C11) という式になりますが、この表にデータが追加されたら上位は範囲と平均対象範囲を変えることになりますが はじめから追加されることを見越して対応した式にすることは可能でしょうか?(Largeは使わずに) また下位3名の場合の">=8"という条件も含めデータが増えた場合 smallを使わずaverageifで求められるでしょうか? よろしくお願いします

  • エクセルで条件付きの平均値を求める関数

    お世話になります。 恐らく簡単な見落としかと思うのですが、 関数がうまく動いてくれないので質問します。 A1~A5に商品名群(空白セルあり)、B1~B5(空白セルなし)にその値段が入力されています。 C1セルに、A1~A5で空白ではない行のB1~B5セルの平均値を出したいです。 例: A1:リンゴ  B1:100 A2:(空白) B2:50 A3:みかん  B3:400 A4:メロン  B4:500 A5:みかん  B5:200 この場合、B2の「50」は含めず、それ以外の行の平均値を求める。 関数はC1=AVERAGEIF(A1:A5,"<>""",B1:B5)と入れたのですが、空白セルを除いて計算してくれません。 間違いが分かる方がいましたら、返信頂きたいです。

  • 条件を付けて平均を求めたい!(Excel)

    列   A      B         C    商品名    ランク       金額    1みかん    A        1000 行 2みかん    C         300    3みかん    B         600    4みかん    C            5             合計 1900    6             平均A    7             平均B    8             平均C 説明をする為に適当に作ったので、何故こんな物の平均を?と思うかもしれませんが、そこはあまり気にせずご回答頂ければ幸いです。 例えば、こんな表があったとします。(勿論、データ量はもっと沢山。。。) 各ランクごとの平均を求めたいのですが、どんな関数を使い、どんな範囲選択をすれば宜しいのでしょうか?  条件を付けAVERAGEで求めれば良いことはなんとなく分かるのですが・・・ 範囲の設定や数式の順番が全然分かりません。 よろしくお願いします。 ※金額欄(C列)・・・ 実際に未入力のセルがあるので、未入力のセルを0(ゼロ)として考えてくれる数式をお願いします

  • (エクセル)複数の検索ワードから検索し転記する。

    (エクセル) 複数の条件にあうレコードを検索し転記する方法を教えてください。 会社で加工履歴を入力し、それを加工のデーターベース及び、単価表としても使用しようと考えています。 以前は、部品コードを入力すると、VLOOKUPで別シートにある一覧から部品コードを検索し、その型式・部品名・金額・処理を出せるようにしていたのですが、同じ部品コードで違う処理加工をするケースが存在し、VLOOKUPでは先頭の1つのみしか結果が出せない為、手入力で行っていたのですが、手入力の際、そこのセルの数式が飛んでしまい、使いやすいのか使いにくいのかわからない状態でした。 そこで、部品コードと行った処理(合計4セル)から一致するものを検索し、言い換えれば、写真下段の加工フォームの様に、C4・C5・D5・E5の4種から一致するレコードを検索し、写真上段の一覧からその結果をC7・E7・C8に挿入すればいいのかと思い、色々とマクロを組んでみましたが、一向に作動しません。 このようなケースの場合、どういったマクロを組めばいいのでしょうか? どなたか、御教授願います。

  • Excel2007の関数について

         A       B       C 1    I        II       III 6  SUN(A2:A5) SUN(B2:B5) SUN(C2:C5) 7    III        I       II 8    C6      A6      B6 7の行にI~IIIのいずれかを入れた場合、8の行には7の行がI=A6、II=B6、III=C6と 返したいのですが、8の関数はどのようにすればよいのでしょうか? ご教示宜しくお願いいたします。

専門家に質問してみよう