こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

SUMIF関数について

日付   曜日  売上  曜日の数値
2005/5/11 水   5,000  3 
2005/5/12 木   6 000   4 
2005/5/13 金   7,000  5
2005/5/14 土   5,000  6
2005/5/15 日   3,000  7
このような表があるとします。曜日の数値はWEEKDAY関数でシリアル値を出しています。SUMIF関数で水曜日と土曜日の合計の和を求めるにはどういう関数式になりますか。
SUMIF(D2:D6,"=3,6",C2:C6)
範囲は曜日のシリアル値、検索条件が3又は6であると言うようにするにはどのようにするのでしょうか。
何度トライしても出来ません。分かりにくいと思いますが、よろしくお願いします。

投稿日時 - 2005-05-11 18:33:28

QNo.1381476

暇なときに回答ください

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

No.4です。

SUMIF関数の検索条件に { }を使って、
複数条件を指定すると、
それぞれの条件の計算結果が配列で返ります。

つまり・・
No.4 の数式が入ったセルをアクティブにすれば、
数式バーにその数式が表示されますよね?
ためしに、その数式の =SUM からあと
(SUMIF(D2:D6,{3,6},C2:C6)) ←の部分だけ(=SUM以外全部) を、
マウスでドラッグし、反転させた状態で F9キーを押してみてください。
ご質問のケースなら
{5000,5000}
と表示されると思います。(ESCキーを押せば元に戻ります)

どちらも 5000なのでわかりにくいですが、
最初の 5000は D列が 3 の場合のみの C列の合計値、
2番目の 5000は D列が 6 の場合のみの C列の合計値です。
ですから 
SUMIF(D2:D6,{3,6},C2:C6) ←だけでは求める合計は出ません。

この合計値の配列を SUM関数で合計しているのです。
=SUM({5000,5000})
ゆえに結果は 10000 になります。
・・こんな説明でよろしかったでしょうか?
*
ちなみに、他にも COUNTIF関数や FIND関数などでも同様です。
たとえば、
「入力した文字列が『東京』または『大阪』または『福岡』で始まるセルの個数」を求めるには
----------------------------------------------
=COUNTIF(A2:A10,"東京*")+COUNTIF(A2:A10,"大阪*")+COUNTIF(A2:A10,"福岡*")
----------------------------------------------
↑でも正しい結果は求められますが、
これも↓のようにした方が数式がコンパクトになります。
----------------------------------------------
=SUM(COUNTIF(A2:A10,{"東京*","大阪*","福岡*"}))
----------------------------------------------

投稿日時 - 2005-05-12 18:43:34

お礼

とても丁寧なご説明有難うございました。関数って奥深いのですね。大変参考になりました。

投稿日時 - 2005-05-12 19:16:12

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(7)

ANo.6

考え方を変えれば良いんですよ。

SUMIF関数でやろうとせず、SUMIF関数の見に行く先で買えればどうですか?

まず、「曜日の数値」の関数を
=IF(OR(WEEKDAY(A2,2)=3,WEEKDAY(A2,2)=6),1,0)
に変更します。
これで、水曜=3と土曜=6の場合に「曜日の数値」に1が入ります。

これに対して
=SUMIF(D2:D6,1,C2:C6)
とすれば、結果として「検索条件が3又は6」が合計できます。

追伸
weekday関数にはオプションで種類があります
=weekday(a1,[種類])
で、種類2にすれば、水曜日が3になります。

投稿日時 - 2005-05-11 19:05:32

ANo.5

#3です。配列数式を考えてみました。

=SUM(IF((D2:D6=3)+(D2:D6=6),C2:C6,""))

と入力して、「Ctrl」+「Shift」+「Enter」キーを押してみてください。すると式が下記のように{}(中括弧)でくくられます。

{=SUM(IF((D2:D6=3)+(D2:D6=6),C2:C6,""))}

複数条件での平均・最大値・最小値等もこの方法で出すことができます。詳細はURLを参照してください。

参考URL:http://hp.vector.co.jp/authors/VA014071/tips/hairetsu.html

投稿日時 - 2005-05-11 19:02:35

ANo.4

こんにちは。

↓でどうでしょうか?
------------------------------
=SUM(SUMIF(D2:D6,{3,6},C2:C6))
------------------------------

投稿日時 - 2005-05-11 18:58:39

補足

これで出来ましたが、理論的にどうしてできるのか意味がわかりません。SUMIFで検索条件に合うものを合計してまたSUMで合計するとはどういうことなのでしょうか。

投稿日時 - 2005-05-12 08:30:13

ANo.3

はじめまして。下記の式ではどうでしょうか。

=SUMIF(D2:D6,"=3",C2:C6)+SUMIF(D2:D6,"=6",C2:C6)

複数条件なら、配列数式という手もありますが・・・。

投稿日時 - 2005-05-11 18:47:44

ANo.2

まず、曜日のシリアル値ですが、1個ずれてませんか?
私のExcelでは、水曜=4 土曜=7となるのですが・・

さて、ご質問の式ですが、論理和を使うのは難しそうなので、
=SUMIF(D2:D6,"=4",C2:C6)+SUMIF(D2:D6,"=7",C2:C6)
このようにSUMIFの和にしてしまえば解決します。
これじゃダメでしょうか?

投稿日時 - 2005-05-11 18:44:16

ANo.1

SUMIF関数の条件は一つしか設定できなかったと思います。

なので、3と5を抽出しようとしたら、SUMIF関数を2つならべるしかないのでは?

=SUMIF(D2:D6,"=3",C2:C6)+SUMIF(D2:D6,"=5",C2:C6)


SUMPRODUCTを使うということもできますが、条件をならべるという考え方は同じですね。

=SUMPRODUCT((D2:D6=3)+(D2:D6=5),C2:C6)

投稿日時 - 2005-05-11 18:44:00

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-