- ベストアンサー
Excel2010で複数条件の計算方法
- Excel2010で複数の条件に該当する項目の合計を計算する方法について教えてください。
- 例えば、A列に果物の名前があり、B列に値段が入っていて、「りんご」と「みかん」と「メロン」の値段の合計を算出したい場合、どのような関数を使えばいいでしょうか?
- 条件がひとつであればSUMIF関数を使えますが、2つ以上の条件を満たす場合はどのようにすればいいのか分かりません。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>2つ以上の場合、どのようにすれば良いか分からないのです。 ふつーに計算するなら =SUMIF(A:A,"りんご",B:B)+SUMIF(A:A,"みかん",B:B)+SUMIF(A:A,"メロン",B:B) とします。 =SUMPRODUCT(SUMIF(A:A,{"りんご","みかん","メロン"},B:B)) みたいなことも出来ますが、わざわざやるほどのことではありません。
その他の回答 (6)
- Nouble
- ベストアンサー率18% (330/1783)
P.s. SUMIFS構文、試してみられました?
お礼
アドバイスありがとうございます。SUMIFS関数だと、確かに複数条件の合計ができるのですが、今回私がやりたいことは同じテーブル内にある複数条件の合計値なので、この関数では実現できませんでした。
- Nouble
- ベストアンサー率18% (330/1783)
=sumproduct(A:A={"リンゴ","メロン","ブドウ","ミカン"}*B:B) 解説 Excelでは定数配列及び配列数式中の値の区切りを 横並びの時は「,」を用いて 縦並びの時は「;」を用いて 表します なのでA列を示すとこうなります(仮に… ですが) {"リンゴ";"メロン";"ブドウ";"ミカン";… } 翻って上記の式では {"リンゴ","メロン","ブドウ","ミカン"} ですよね? A列は縦列、上記は横列なのです。 またExcelではフェールの場合は0、トゥルーは0以外(※注:1が主に用いられる) と、決められています。 (※注:内部値の話しです) よって、(A:A={"リンゴ","メロン","ブドウ","ミカン"})+0は 縦列と横列の評価なので、総当たりで2次元に展開されて 1000 0100 0010 0001 ……… …… … … … となります。 (※注:解りやすくするために仮にこう(真理値表)書きました、 実際は{1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;… }となります) この時 リンゴとそれ以外が 同時にイコールとなることはあり得ません。 「リンゴ」であり、同時に「ミカン」であり、文字数が「リンゴ」のそれである三文字 こういう文字列が、あり得ないからです。 「リンゴ」と「リンゴ」ではないもの、「ミカン」や、「ブドウ」や、それ以外が “同じ”と、なることは 当り前ですが、くどいですが、あり得ません。 故に一行中「1」は、最大一箇所のみです。 また、 条件次第では(例えばA列のセルに「イチジク」などと入っていた場合など) 0000 もあり得ます。 これにB列を掛けると 1のところのみが、B列中の同行の値と入れ替わります。 (※注:1×X=Xなので) あとはsamproduct文で、これらを集計してやれば良い。 ただそれだけのことです。 お役に立てていたらば幸いです。
お礼
アドバイスありがとうございます。色々と勉強になりました。このあたりの構造を理解しておくと、関数を使う際に理解が早いと思いました。
- keithin
- ベストアンサー率66% (5278/7941)
>「負担」がなければ良いですね 非常にしばしば、間違った指摘によってご質問者さんを不安がらせる回答が寄せられる事があり、大変迷惑をこうむっています。 回答の数式で負担が発生する事は、100%ありません。
- keithin
- ベストアンサー率66% (5278/7941)
>「=SUMIF(A:A,"リンゴ" or "みかん" or "メロン,B:B)」みたいな感じです(^_^メ) >こんなのありませんかね? はて??? 再掲: > =SUMPRODUCT(SUMIF(A:A,{"りんご","みかん","メロン"},B:B)) > みたいなことも出来ます 回答したのを、試してみることもしていないのですか?(-_-×) どういうことでしょうか。
お礼
大変失礼しました。SUMPRODUCT関数のことだったので、No2さんと同じ計算式だと思い込んでいました。 確かに、これであれば私がやりたい内容そのものです。後は別の方がご心配されているような「負担」がなければ良いですね。まずはこの方法で試してみます。 改めましてありがとうございました!
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA2セルから下方に果物の名前が、B2セルから下方に値段が載っているとします。 そこで検索したい果物の名前をD2セルから下方にりんご、みかん、メロンなどと入力します。 作業列としてC2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(D:D,A2),1,"") お求めの検索した該当の果物の値段の総計をE2セルに表示するとして次の式を入力します。 =SUMIF(C:C,1,B:B) SUMPRODUCT関数などではデータが多くなった場合には計算に負担がかかりますし、データの範囲を指定して使う必要が有ります。また、検索する果物の数が多くなればそれだけ式も長くなります。 ここでの方法ではD列にたくさんの果物の名前を入力しても何らの問題もなく総計を求めることができます。
お礼
ご回答ありがとうございます。アドバイス頂いたやり方も確かにありかと思いますが、私が集計したい表では構造的に少々難しそうでした。 今はSUMIF関数を足し算で集計しているのですが、私のイメージとしては検索対象項目をOR条件で追加していき、一つのセル内で簡単に完結するような関数を求めていました。エクセルでは厳しいのかも知れませんね。
お礼
ご回答ありがとうございます。実は今はアドバイス頂いた方法で計算しているのですが、もっと簡単に検索対象項目を並べて集計するような関数が無いものかと考えています。勝手につくるとすれば、「=SUMIF(A:A,"リンゴ" or "みかん" or "メロン,B:B)」みたいな感じです(^_^メ) こんなのありませんかね?