『集計の仕方』(ちり) 今、『売上請求書』『入金予想』のシートを作っています。 売上請求書には、「入金予定日」「入金予定額」などを入力する予定です。 入金予想は、カレンダー仕様になっています。 そこで、入金予想のカレンダーに、売上請求書のシートで入力した「入金予定日」「入金予定額」を反映させたいのですが、どうやったらいいのでしょうか? 例えば、『売上請求書』のシートが以下になってる場合、 (左から会社名・入金予定日・入金予定額) A社 6/1  1,000円 B社 6/2  2,000円 C社 6/1  3,000円 D社 6/2  4,000円 これを以下のように『入金予想カレンダー』のシートに反映させたいのです。 6/1 4,000円 6/2 6,000円 どのようにしたらいいでしょうか? いちいち足していくのではなく、売上請求書に入力した段階で自動的に反映させる方法があれば教えてください。 わかりにくい質問ですみません! 何について勉強(検索)すればわかるようになるかすらわからないのです。 すみません。 よろしくお願いします。 WINDOWS XP EXCEL2003 です。 どうぞよろしくお願いします。 ---- こんばんわ。。 SUMIF関数で、できそうです。。 (kei) ---- ありがとうございます!! それだけでも助かります〜☆ 調べてみます!! (ちり) ---- 横から失礼します。 keiさん、SUMIFを使った式を教えてください。 入金予想カレンダーの日付のセルを同じシートのD1セルとして =SUMIF(A1:A10,"=D1",B1:B10)  とか =SUMIF(A1:A10,"=INDIRECT(D1)",B1:B10) でやってみたのですが出来ませんでした。 どこが違うのでしょうか?条件の設定方法が違うのでしょうか? 宜しくお願いします。(おいちゃん) ちなみに、=SUMPRODUCT(($A$1:$A$10=D1)*($B$1:$B$10)) では出来ました。 ---- え、なんで””で囲っちゃうんですか?? =SUMIF(A1:A10,D1,B1:B10) でいいんじゃないですか? それともシリアル値じゃない?  (すずめ) ---- >入金予想カレンダーの日付のセルを同じシートのD1セルとして すずめさんの仰るとおり、A1:A10がシリアル値で、D1もシリアル値であれば、 =SUMIF(A1:A10,D1,B1:B10) もし、A1:A10が文字列であって、D1も文字列であっても、 =SUMIF(A1:A10,D1,B1:B10) で行けちゃうと思うけど。。 (kei) ---- keiさん、すずめさんありがとうございます。 6/1を文字列だとばかり思っていたて、ヘルプの中の式および文字列を指定した場合の " "を使ったパターンしか思いつきませんでした。 シンプルに考えればよかったのですね。 ただ、SUMIF関数の引数の使用方法から考えると"=D1"のD1はセル番地でなく 一つの文字列と考えて結果が0(ゼロ)となったのは理解できるのですが、 "=INDIRECT(D1)"の方は回りくどい書き方ですが間違えていないような気がします。 どうしてなんでしょうか。関数は使えないとかの制限でもあるんでしょうか。  (おいちゃん) ---- いや、"=INDIRECT(D1)"って書いちゃうと、「=INDIRECT(D1)」って書かれた文字列を探しに行きますよ? 「””」の中身全部が文字列だとエクセルは認識しますよ? D1に書かれているものが文字列で、シリアル番号に直したくて、そうしてるんですか? それだったら、もし、D1に「6/1」という文字列があるとしたら、「DATEVALUE」でシリアル値にするとか。 ちなみに「INDIRECT」は参照文字列で指定されるセル参照を返します。 たとえばD1に「E1」と入力があったとし、E1に「6/1」と入力があったとします。 その場合は「=SUMIF(A1:A10,INDIRECT(D1),B1:B10)」で結果が出ると思います。 つまりINDIRECTの中には「セル番地が入力されているセル」を入れるんです。 (INDIRECT("E"&D5)っていうような書き方等、他にもいろいろありますケド) 今回はD1には日付が入っていて、セル番地ではなかったのでエラーになっているはずです。 (すずめ) ---- すずめさん、ありがとうございます。 INDIRECT関数の使い方を勘違いしていました。文字列をセル番地として参照する関数だと思っていました。 セル番地やセル範囲の名前が入力されているセルのセル番地を引数として使うことで間接的にセルを参照する関数だということですね。 話はSUMIF関数の引数の使い方に戻りますが、 検索条件が数式の場合も""で囲むとヘルプに出ていたのですが使い方としては関数やセル番地を使わない数式に限られるということでしょうか。 ヘルプにはそのような制限も無く又使用例も少ないのでこちらもまた使い方を間違えておりました。 いろいろな事を聞いてすいません。 (おいちゃん) ---- ええっと・・・ >文字列をセル番地として参照する関数 あってます。そのとおりです。あとセル範囲名も参照できます。 INDIRECT("D1") と書けばINDIRECTの中に書かれているのが文字列「D1」なので、D1セルを参照しに行きます。 ""で囲んだ中は文字列になるので。 (でもこの書き方だと、なにも「INDIRECT("D1")」って書かなくても「D1」ってだけ書けば同じ意味なの で、しないだけです) だけど INDIRECT(D1) って書くと「D1に書かれている文字列をセル番地として参照しなさい」ということになるんです。 とにかくINDIRECTの括弧の中には文字列か文字列の入っているセルを指定します。     SUMIF関数ですが。 >使い方としては関数やセル番地を使わない数式に限られる う、うーん、その言い方だとちょっと正しくないような・・・ 文字列や比較演算子を使用した式の場合、""で囲む、というのが正しいのかな・・? (どなたか詳しい方、追記お願いします) だから・・・ =SUMIF(A1:A3,">=100",B1:B3)  ←100以上を検索 とか =SUMIF(A1:A3,"*A社*",B1:B3)  ←A社を含むものを検索 とかの場合は""でかこんでください。 =SUMIF(A1:A3,SUM(E2:E3)*2,B1:B3)  ←E2:E3を足し、その結果に2をかけたものを検索 とか、いっそのこと =SUMIF(A1:A3,10+10,B1:B3)  ←10+10=20を検索・・って20って書くよね、普通 の場合は""いりません。 でも =SUMIF(A1:A3,">="&SUM(E2:E3),B1:B3)  ←E2:E3を足した結果以上を検索 の場合は""がいります。     わ、わかりますか・・・? (すずめ) ---- こんにちは。 横から失礼します。 >SUMIF関数の引数の使い方 当方Excel2003ですが、ヘルプには、以下のように書かれています。 【検索条件】 計算の対象となるセルを定義する条件を、数値、式、または文字列で指定します。 式および文字列を指定する場合は、">32"、"Windows" のように、半角の二重引用符 (") で囲む必要があります。 これが全てで、検索条件が、 ・数値のとき  →""不要 ・式および文字列→""必要 となっていると思います。 以下は質問者さんの最初のご提示例(+5行目)ですが、E列にいろいろな書き方で求めてみました。 ・E1〜E3は、検索条件が数値の例ですので、""を使っていません。 ・E4〜E5は、検索条件が式の例ですので、""を使っています。 ・E6  は、検索条件を文字列にするために、""を使っています。  ※「40330」は、「2010/6/1」のシリアル値(日付のExcel内部での数値)です。  ※E3数式では、D1セルを参照しているので、D1セルの値である「2010/6/1」が検索条件です。 ※「_」セルは未入力または"" [R/C] [A] [B] [C] [D] [E] [1] A社 2010/6/1 1,000 2010/6/1 4000 E1 =SUMIF(B$1:B$5,DATE(2010,6,1),C$1:C$5) [2] B社 2010/6/2 2,000 40330 4000 E2 =SUMIF(B$1:B$5,40330,C$1:C$5) [3] C社 2010/6/1 3,000 _ 4000 E3 =SUMIF(B$1:B$5,D1,C$1:C$5) [4] D社 2010/6/2 4,000 _ 4000 E4 =SUMIF(B$1:B$5,"=40330",C$1:C$5) [5] E社 D1 5,000 _ 4000 E5 =SUMIF(B$1:B$5,"="&D1,C$1:C$5) [6] _ _ _ _ 5000 E6 =SUMIF(B$1:B$5,"D1",C$1:C$5) (コタ)16:22 ちなみに以下のE3のようなケースでは、""を使っていませんが、これは「D1」の部分が、 参照先の「"a"」という文字列に置き換わるためです。 ※「_」セルは未入力または"" [R/C] [A] [B] [C] [D] [E] [1] A社 a 1,000 a 4000 E1 =SUMIF(B$1:B$5,"a",C$1:C$5) [2] B社 b 2,000 _ 4000 E2 =SUMIF(B$1:B$5,"="&D1,C$1:C$5) [3] C社 a 3,000 _ 4000 E3 =SUMIF(B$1:B$5,D1,C$1:C$5) [4] D社 b 4,000 _ 4000 E4 =SUMIF(B$1:B$5,IF(E3=4000,D1,"D1"),C$1:C$5) [5] E社 D1 5,000 _ _ (コタ)追記17:33 ---- すずめさん、コタさん、ありがとうございます。 すずめさんの仰るように私は、INDIRECT(D1)とINDIRECT("D1")の違いが分かっていませんでした。 今更の感じで恥ずかしいのですが、 D1は"D1"と違い、参照するセル番地であり文字列ではないという事。 そして、セル番地には""は要らないが、文字列は""で囲む必要があるという事。 引数が文字列の場合そのままセル番地として参照するが、 引数がセル番地のときはそのセル番地が参照するセルに入力されている文字列をセル番地又はセル範囲名として参照するという事。 このような理解でよろしでしょうか? 何かこう考えてくると私のSUMIF関数の勘違いも似たような原因の気がしてきました。 =SUMIF(B:B,D1,C:C) =SUMIF(B:B,"="&D1,C:C) =SUMIF(B:B,40330,C:C) =SUMIF(B:B,"=40330",C:C) =SUMIF(B:B,"="&40330,C:C) コタさんも書かれているように、これらはすべて正しい答えを導き出します。 これらをまとめると、SUMIF関数の検索条件が、 セル番地または数値のときは、""は要らない。 文字列のときは、""で囲む。 式のときは、等号(=)不等号(<、>)を""で囲み「&」でつなぐ。等号は省略することも可能。 (ただし、等号、不等号と数値だけの場合は、「&」を使わず全体を""で囲んでもよい) 又、等号、不等号の入った式それ自体をひとつの文字列として検索したいときは、 ""で囲まれた等号と、""で囲まれた等号、不等号を含んだ式を「&」でつなぐ。("="&">32"の様に) こんな決まりになっている、と考えてもよいのでしょうか? (おいちゃん) ---- ばっちりだと思います。 もし、今後数式の中で、ある部分がどのような値になっているかを確認したくなったら、 ↓のサイトの「◆「F9」キーで配列定数を表示する」に書かれている方法で、該当箇所 だけの計算結果が分かりますので、やってみてください。 http://pc.nikkeibp.co.jp/pc21/special/hr/hr5.shtml (コタ) ---- コタさん、説明ありがとうございます。 おいちゃんさん、そのまとめすばらしいです。 ちょっとぐぐってみたんですけど、こういうの、まとめたところ無いんですね・・。 後輩に教える際に参考資料として使用させていただいていいでしょうか? (すずめ) ---- 皆さん、ありがとうございます。 おかげでスッキリ致しました。 表面的に分かったつもりでいても、正しい使い方って本当に難しいんですね。 SUMIF関数でこんなに悩むとは思いませんでした。 コタさん、ありがとうございます。 F9キーはこちらの学校で教えてもらい使っています。 ただ今は、「ツールーワークシートの分析ー数式の検証」を利用する方が多くなっています。 すずめさん、ありがとうございます。 お褒めの言葉をいただき恐縮しております。 私のような素人が作ったまとめは達人の方から見れば笑われてしまいそうですが、よろしければどうぞ。 ベテランの方は当たり前だと思っていることが、私のような初心者は箇条書きにしないと整理できないんです。 INDIRECT関数のことも含めていろいろ教えていただきありがとうございました。 これからも宜しくお願いいたします。 (おいちゃん) ---- おいちゃんさん、ありがとうございます! きっと男性の方はこういう風に箇条書きの方が分かりやすいのですね。 まとめ、活用させていただきます! (すずめ)