• ベストアンサー

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であると言うようにするにはどのようにするのでしょうか。 何度トライしても出来ません。分かりにくいと思いますが、よろしくお願いします。

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

  • ベストアンサー
回答No.7

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,{"東京*","大阪*","福岡*"})) ----------------------------------------------

dai5syu22tai5
質問者

お礼

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

その他の回答 (6)

  • el2368
  • ベストアンサー率71% (232/325)
回答No.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になります。

noname#18862
noname#18862
回答No.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
回答No.4

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

dai5syu22tai5
質問者

補足

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

noname#18862
noname#18862
回答No.3

はじめまして。下記の式ではどうでしょうか。 =SUMIF(D2:D6,"=3",C2:C6)+SUMIF(D2:D6,"=6",C2:C6) 複数条件なら、配列数式という手もありますが・・・。

回答No.2

まず、曜日のシリアル値ですが、1個ずれてませんか? 私のExcelでは、水曜=4 土曜=7となるのですが・・ さて、ご質問の式ですが、論理和を使うのは難しそうなので、 =SUMIF(D2:D6,"=4",C2:C6)+SUMIF(D2:D6,"=7",C2:C6) このようにSUMIFの和にしてしまえば解決します。 これじゃダメでしょうか?

回答No.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)

関連するQ&A

  • SUMIF関数の使い方

    SUMIF関数で教えてください。 月別売上表のフォルダの中にある売上先、売上金額を(日ごとになってます。)を別のフォルダの年間得意先売上表にSUNIF関数で処理したいのですが、リンクした際、同時に開いているときは、計算されるのですが、いったん閉じて、SUMIF関数の入っている、得意先売上表を新たに開くと「VALUE」が表示されます。 これを、同時に開かずとも、表示できる方法を教えてください。 よろしくお願いいたします。

  • 関数の件

    曜日連動で文字を表示する件    A列     B列     C列     D列  1 2014/3/9  日      AA D1=IF(WEEKDAY(A1)=1、C1,"")、 D1にAAですが、A1とD1は連動、  D1に3/8(土)、3/9(日)AAを日にち順に土、日、AA表示し、平日は空白とする、  WEEKDAYの複数又はIF関数で出来ますか?  教えて下さい、よろしくお願いします。 IF関数訂正します。

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

    エクセルに詳しくないので関数に強い方宜しくお願いいたします。 シート1の1行目に月・火・水・木・金・土・日と曜日を入れ、2行目にその曜日に合わせた月曜日が「3」、火曜日が「9」、水曜日が「4」など決まった数字を入れるとします。 シート2に月間の7/1から7/31で水曜日から始まる表を作り、その下の行にシート1に入れた7/1(水)だったら「4」、7/2(木)なら・・・と数字が表示されるような関数はあるでしょうか?

  • SUMIF関数の質問

    宜しくお願いします ExcelのSUMIF関数について教えてください。 質問:入力日付を基に区間検索、複数項目で合計を求める。  =SUMIF(UFJ!B4:B604,">="&売上入金!C13,UFJ!M4:M604)-SUMIF(UFJ!$B$4:$B$604,">"&売上入金!$D$13,UFJ!M4:M604)  上記の数式の説明:  UFJシート:B列 日付データ、F列 仕入項目、M列 金額  売上入金シート:A列A18仕入項目(追加したい部分)、  C列C13検索開始D列D13 検索終了、  現在の数式では区間内の金額は抽出できていますが、この条件内で F列仕入を指定して金額を求めたいです。  まだまだ未熟な為に、VBAは分りませんので関数で数式をご指導ください。    PC内容  OS  WinXP Office 2003 です   宜しくお願いします

  • エクセルのSUMIF関数なのですが・・・

    A列に日付、B列に販売員名、C列に売上金額とし、現在三ヶ月分800個のデータが入力されている状態だとします。 例えば販売員Yさんの現在の売上を集計しようとすると =SUMIF(B1:B800,"Yさん",C1:C800)になると思うのですが、Yさんの月ごとの売上集計を計算するにはSUMIF関数をどういう風に変えればいいのでしょうか。 分かりにくい説明かもしれませんが、どうぞ宜しく御願い致します。

  • 関数の件

    曜日連動で文字を表示する件    A列     B列     C列     D列  1 2014/3/9  日      AA D1=IF(WEEKDAY(A1),”aaa") D1にAAですが、A1とD1は連動、  D1に3/8(土)、3/9(日)AAを日にち順に土、日、AA表示し、平日は空白とする、  WEEKDAYの複数又はIF関数で出来ますか?  教えて下さい、よろしくお願いします。  

  • SUMIF関数

    1月1日 100 日付をA列1-10行 数をB列1-10行 1月2日 200 (略) 1月10日 1000 これで 1月4日~1月7日までの 合計SUMIFで求めるとき、 =SUMIF(A1:A10,">=1/4",B1:B10)-SUMIF(A1:A10,">=1/7",B1:B10) と 数式立てました。が答えは 2月8日 と返ってきました。 そこで 質問ですが SUMIF関数は 複数の数式には対応しないのでしょうか?(1月4日以降の合計から 1月7日以降の合計を引いて 1月4日~1月7日 を求める方法) 教えて 下さい。お願い いたします。 エクセルは2002です。 なお、自分 先日COUNTIF で質問して、そのとき 教えてもらった 数式が そのまま流用できそうな 感じがして SUMIF関数に 置き換えて みたら数値が欲しいのに、日付が 返ってきた しだいです。 http://www.okweb.ne.jp/kotaeru.php3?q=339430 お願いいたします。 最近、関数が 難しいですが がぜん 面白くなってきて、参考書を読んで 実践して つまずくと ここに 頼って きてしまいます。

  • エクセル 関数

    A   B   C    D 10/1  金  9:00  12:00 10/2  土  9:00  13:00 10/3  日  9:00  14:00 10/4  月  9:00  11:00 10/5  火  9:00  15:00 :   :    : 5        5     2               3 Aは日付です。 Bは曜日です。 Cは出勤時間 Dは退勤時間 そこでお聞きしたいのですが・・ 12:00まで働いた曜日別のデーターがほしいのですが・・ 曜日  12:00   15:00  18:00 月    1      2    1 火    2      1    1 水    1      0    0 木    1      0    1 :    :      :   : 上記のような感じにしようと思っています。 関数がわからなく困っています。 宜しくお願いします。。

  • sumif関数

    sumif関数を使って、 =sunif(A1:A10,"<0.5",B1:B10) のように書きますよね。 この0.5の部分の代わりに、別のセルに入力した数値を参照したいのですが、たとえばC1のセルに0.5を入力した上で =sunif(A1:A10,"<C1",B1:B10) のように書いても、うまく認識してくれず、全部0になってしまいます。 なぜでしょうか?

  • Excel関数について

    先程、Excelの件で下記の質問をさせていただき解決しました。 もし、”WEEKDAY”が使用できない場合は どの様な関数になりますでしょうか。 よろしくお願いいたします。 A1のセルに出勤日 B1に出勤時間 C1に退勤時間 D1に休憩時間 E1に拘束時間 F1に曜日 G1実働時間 H1に【曜日が”土”または”日”の場合、H1に実働時間を表示させる】 という関数を組みたいです。

専門家に質問してみよう