アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003です

ネットで検索したら横に複数条件がある場合は、SUMPRODUCTなどを使うといいというのはわかったのですが
縦に複数条件ある場合は、SUMIFで足してくしかないのでしょうか?

例えば
A列      B列
果物     個数
みかん   3
りんご   2
バナナ   1
りんご   2
みかん   5

D2 りんご
D3 みかん

と言うデータがあり

みかんとりんごだけの合計値がほしい場合は
=SUMIF(A:A,D2,B:B)+SUMIF(A:A,D3,B:B)
でもとめられますが、
もっと簡素化したいです。
(あまり「+」は使いたくない)

SUMIFをまとめられますか?
もっと効率のいい関数があれば教えて下さい。
よろしくお願い致します。

「縦に複数条件がある場合の合計値」の質問画像

A 回答 (3件)

効率がいいとは、計算速度なのか、オートフィルなのか、数式の短さなのか。

。。

>=SUMIF(A:A,D2,B:B)+SUMIF(A:A,D3,B:B)
で充分だと思いますが、
=SUMPRODUCT(SUMIF(A:A,D2:D3,B:B))
とすることは可能です。
    • good
    • 0
この回答へのお礼

SUMPRODUCT(SUMIF(A:A,D2:D3,B:B))
が欲しかった回答です!
ありがとうございました。

お礼日時:2011/11/11 23:50

 Excel2007以降でしたら、ANo.1様の仰る様に



=SUMPRODUCT(SUMIF(A:A,D2:D3,B:B))

でも大丈夫ですが、Excel2003の場合は、

=SUMPRODUCT(SUMIF(A:A,D2:D3,B:B)*1)

という具合に、

*1

が必要になるかも知れません。(私の勘違いでしたら申し訳御座いません)

 それから、次の様な関数とすれば、D列に入力する条件の数が増えても、関数を書き替える必要がありません。
【条件が98個以下の場合】

=SUMPRODUCT(SUMIF($A:$A,$D$2:$D$99,$B:$B)*1)


【条件の数が定まらない場合】

=SUMPRODUCT(SUMIF($A:$A,$D$1:INDEX($D:$D,MATCH("゛",$D:$D,-1)),$B:$B)*1)

 尚、考え難い状況ではありますが、条件の数が数千個以上にもなる場合には、計算処理に要するパソコンの負荷が過大になり、結果が表示されるまでに要する時間が長くなります。


 それから、御質問文の下に添付されている画像を拝見した処、E2セルには

SUMIF(A:A,D2,B:B)

という関数が入力済みの様に思えるのですが、それでしたら、SUMPRODUCT関数を応用した関数や

=SUMIF(A:A,D2,B:B)+SUMIF(A:A,D3,B:B)

という関数を使わずとも、

=SUM($E:$E)

で事足りると思うのですが、如何でしょうか。


 因みに、E2以下に入力する関数は、次の様に発展させておいた方が、D2以下のセルに対して、切取り、削除、挿入等の編集を行っても、参照先が出鱈目になりませんので、便利です。

=IF(INDEX($D:$D,ROW())="","",SUMIF($A:$A,INDEX($D:$D,ROW()),$B:$B))
「縦に複数条件がある場合の合計値」の回答画像2
    • good
    • 0
この回答へのお礼

とても参考になりました。
*1がなくても大丈夫でした。
ありがとうございました。

お礼日時:2011/11/11 23:51

>もっと効率のいい関数があれば教えて下さい


ない。
+はORの意味で、この質問の場合は、意味的にORを示さないとならないので。
SUMPRODUCT関数でも
=SUMPRODUCT(((A1:A5="みかん")+(A1:A5="りんご"))*(B1:B5))
と+を使う。
>あまり「+」は使いたくない
個人的趣味だ。今後エクセルの関数を経験するとき、じっくり勉強してみて。
ーー
OR関数を使って作業列を作って
=OR(A1="りんご",A1="みかん")
=SUMIF(C1:C5,TRUE,B1:B5)
なってのも意味ないだろう。
ーー
=SUM(IF((A1:A5="りんご")+(A1:A5="みかん"),B1:B5,0))
を配列数式にするのも+を使うし意味無いだろう。
    • good
    • 0
この回答へのお礼

確かにそうですね。
ありがとうございました。

お礼日時:2011/11/11 23:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!