• ベストアンサー

エクセルで2つの条件で合計するには

エクセル初心者です。 A B C 入荷日 金額  出荷日 03/3/4 500 03/5/6 03/4/4 500 03/4/12 500 03/6/12 というリストがあります。 例えば、入荷日が03/3/4日以前で出荷日が03/3/4日以前のものだけ合計したい場合どうしたらいいでしょうか? その場合出荷日が空白のセルも合計にいれます。 つまり日付をさかのぼって棚卸しする方法を ご存知ないでしょうか?

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.8

No.4 & No.6 & No.7 です。 > 入荷日が3月31日以前のもので、 > 出荷日が空白セルはまだ出荷されていないので > 在庫になっているということ、あとは3月31日 > 時点で出荷されていないものを合計したい No.7の補足にある表でいえば、 =SUMPRODUCT((A2:A11<="2003/3/31"*1)*((C2:C11>"2003/3/31"*1)+(C2:C11="")),B2:B11) こういうことでしょうか?

momotaroo
質問者

お礼

そうです!!!! ばっちりうまくいきました。 あーーー良かったーーー!! 本当にいろいろと助けていただいてありがとうございました。 もう涙うるうるです!! エクセル初めて間もないのに会社で一人でいろいろ 全部しなくちゃいけなくなって、もーいっぱいいっぱい でーーー。誰もパソコン詳しくなくって。 泣きが入りそうでしたーーー。 説明も足りなくて数々の失礼お許しください。 それなのに何回も根気よく考えてくださって 本当にありがとうございました!! ほんとに涙ちょちょぎれます。 感謝、感謝です!! 心からありがとうです~!!

その他の回答 (7)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.7

No.4 & No.6 です。 質問が、No.6の条件(2)の場合の別解です。 F1に 2003/3/4 と入力されているとして、 =SUMPRODUCT(((A2:A100<=F1)+(C2:C100<=F1)>0)*(B2:B100)) または、DSUM 関数を使って、 たとえば条件を     J       K      1  入荷日      出荷日     2  <=2003/3/4 3  <=2003/3/4 J1に 「入荷日」、K1に 「出荷日」 J2に → <=2003/3/4 K3に → <=2003/3/4 と入力( 2行目と3行目に分けてください ) =DSUM(A1:C100,B1,J1:K3)+SUMPRODUCT((A1:A100>"2003/3/4"*1)*(C1:C100=""),B1:B100)

momotaroo
質問者

補足

すいません本当にのところ頭がウニです。 説明不足はあやまります。 質問がおかしい、例題がおかしい、これもあやまります。 私がやりたかったことは、☆日付をさかのぼった棚卸なんです。☆これが一番の意図です。 例えば、3月31日以前の棚卸をする場合、 入荷日 金額 出荷日 2003/1/1 1 2003/4/10 2003/1/2 1 2003/1/10 2003/2/1 1 2003/2/2 1 2003/2/13 2003/3/1 1 2003/3/2 1 2003/3/15 2003/4/1 1 2003/4/2 1 2003/5/1 1 2003/6/1 1 5 =SUMPRODUCT((A2:A11<="2003/3/31"*1)*(C2:C11<="2003/3/31"*1),B2:B11) 教えていただいた関数は5とでます。 数式はもちろんあっていると思うのです。 言い方が悪かったのはあやまります。 しかし、私は棚卸をしたいんです。 ですから、答が3となるようにしたいんです。 3月31日現在時点での棚卸です。 ということは、入荷日が3月31日以前のもので、 出荷日が空白セルはまだ出荷されていないので 在庫になっているということ、あとは3月31日 時点で出荷されていないものを合計したいということです。 なんかいろいろ足りない点はあやまります。 混乱や、お手数お掛けしてすいませんでした。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.6

No.4です。 > 実際に試してみたら、入荷日が2003/3/4以前の > ものだけ合計して、出荷日が2003/3/4以前のものを > 正しく合計しないようでした。 もしかして、質問の意味が理解できていないかもしれません。 No.4 の数式は、 (1)同じ行のデータで(←これがポイント)、 ・入荷日が 2003/3/4以前 かつ ・出荷日が 2003/3/4以前、または空白 になっているもののみ、B列を合計する。 ・・・という条件です。 そうではなくて、 (2)同じ行とかに関係なく ・入荷日が 2003/3/4以前( 出荷日の日付は関係ない ) ・出荷日が 2003/3/4以前、または空白( 入荷日の日付は関係ない ) になっているものすべて B列を合計する。 ・・・ということでしたら、No.4の数式では正しく合計できません。 No.5 の方も、どういう条件かわからないということをおっしゃっていますが、「うまくいかなかった」という結果報告だけではなく、こういうことを具体的に補足してください。 質問にある 3行のデータだけで考えると、期待される答えは何ですか? (1)の条件だとばかり思い込んでいたので、これでは該当するデータがないと不思議には思っていましたが、もし(2)の条件なら答えは 1000 ですよね。それで合っていますか? (2)の条件だとしたら、 ( C列に関係なく、A列が 2003/3/4以前 )+ ( A列に関係なく、C列が 2003/3/4以前 または空白 )- ( 同じ行で、A列が 2003/3/4以前、C列が 2003/3/4以前 または空白 ) という計算になりますから、 たとえば F1セルに 2003/3/4 と条件の日付が入力されているとして、 =SUMIF(A:A,"<="&F1,B:B)+SUMIF(C:C,"<="&F1,B:B)+SUMIF(C:C,"=",B:B)-SUMPRODUCT((A2:A100<=F1)*(C2:C100<=F1),B2:B100) というような式になるのかと思いますが・・ SUMPRODUCT 関数のデータ範囲は適宜変更してください。 くり返しになりますが、補足は具体的にお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

>入荷日が03/3/4日以前で出荷日が03/3/4日以前のものだけ合計したい 質問に上げた例では、合計する該当がないのですか。例の挙げ方としては異例ですね >出荷日が空白のセルも合計にいれます 出荷日か入荷日のどちらかが空白ならば、出荷日か入荷日のどちらか一方が (実際は入荷日の空白はないのかな)日付条件に合えば、加算対象にするってことですか。 ーーーーーーーーーーー 普通2条件の検索や集計は SUMPRODUCT 配列数式 VBA などの回答がでます。 私はDSUMの回答を入れることが多かったのですが、 本件は日付であることと、空白が条件にあるためてこずりました。 (○×は参考までにつけたものです) ちょっと例を変えてますがA1:E11に 商品 入荷日 出荷日 金額 a 2003/2/2 2003/5/1 4 X b 2003/2/1 B 3 ○ c 2003/3/4 2003/3/1 4 X a 2003/1/2 2003/3/14 3 X s 2003/2/3 2003/2/23 4 ○ b 2003/1/4 B 5 ○ c 2003/1/2 2003/1/15 4 ○ c 2003/2/3 2003/2/5 3 ○ a 2003/3/4 2003/4/2 5 X b 2003/5/1 2003/5/6 6 X Bのところのセルには1スペースを入れています。 条件はF1:G3 入荷日 出荷日 <37656 <37684 <37656 B 上記の数字は、2003/2/4と2003/3/4の日付シリアル値というものです。 Bのところのセルには1スペースを入れています。 空白のままでは結果がおかしかったので、データ・条件ともに1スペースを入れました。苦肉の策です。 式は=DSUM(A1:D11,"金額",F1:G3) ーーーーーーーーーーーーーーー Dsum関数でやろうとして、2つでつまずきました。 (1)Criteriaでの日付の表現 (2)出荷日を空白セルとして、Criteriaでそれの設定のし方 これは、今#4のご回答で、正解が入ったようですね。 (1)は日付シリアル値でしのぎました。 (2)は1スペースを入れてしのぎました。 回答をして、私が質問もおかしいのですが、よい解決法をご存知でしたら ご質問者のためにも回答を入れてください。 回答自身も間違っていたらごめんなさい。

momotaroo
質問者

お礼

本当にいろいろと考えていただいてありがとうございました。 すごく難しいことだったんですね。 初心者の私にはなんだか頭がウニになりそうです。 いろいろと考えてくださって本当にありがたいです。 ただ全部のデータにスペースをいれるのはちょっと無理みたいです。なんか空白セルを数えるようにもなっているみたいなので。 本当にありがとうございました。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

こんにちは~ データ量が多い場合は、No.3の方の DSUM関数がお勧めですが、 DSUM関数では、No.3の方もおっしゃっているように、 > その場合出荷日が空白のセルも合計にいれます。 に対応できません。 入荷日には空白がなく、データが100行目までに入っているとすれば、 =SUMPRODUCT((A2:A100<="2003/3/4"*1)*(C2:C100<="2003/3/4"*1),B2:B100) で、お望みの答えは出ると思います。 "2003/3/4" のあとの *1 をお忘れなく。 "2003/3/4" という文字列に 1を掛けることで日付データに変換しています。 あと、たとえば F1セルに条件の 2003/3/4 と入力しておけば、 =SUMPRODUCT((A2:A100<=F1)*(C2:C100<=F1),B2:B100) でもかまいません。 SUMPRODUCT関数は、あまり範囲を広げすぎると処理が遅くなりますので、範囲指定は必要最小限にとどめてください。

momotaroo
質問者

お礼

ご回答ありがとうございます。 実際に試してみたら、入荷日が2003/3/4以前の ものだけ合計して、出荷日が2003/3/4以前のものを 正しく合計しないようでした。 大変考えていただいて本当にありがとうございました。

  • mee42760
  • ベストアンサー率40% (47/116)
回答No.3

空白がなければDSUM関数が使えるのですが。 DSUM(Database, フィールド, Criteria) Database リストまたはデータベースを構成するセル範囲を指定します。 (質問の表の場合はA1:C5) フィールド 関数の中で使用する列を指定します。 (質問の表の場合は2) Criteria 指定した条件が設定されているセル範囲を指定します。列ラベルと検索条件を指定するセルが少なくとも 1 つずつ含まれている場合は、Criteria に任意のセル範囲を指定することができます。 (質問の表の場合E2:F3として) | E     | F ━━━━━━━━━━━━━ 2| 入荷日   |出荷日 3|"検索条件" |"検索条件" 図の表記で記述。 "検索条件"には <=03/3/4 の様な式を入れます。

momotaroo
質問者

お礼

回答ありがとうございます。 今回は空白セルがあるので 今回教えていただいた関数は ぴったりのケースがあったときに 使わせていただきます。 大切に保存させて頂きます。 本当にありがとうございました!!

  • Terumaro
  • ベストアンサー率20% (6/30)
回答No.2

>データの列が15列くらいあるので、その都度列を挿入したりとかしないで 15列ってどんな風になってるんですか? 入荷日、金額、出荷日、入荷日、金額、出荷日~~ のように横につながってるということでしょうか? もう少し具体的に記していただけますと良い回答がありそうです。

momotaroo
質問者

お礼

何回もすいません。ありがとうございます。 実際に前に教えていただいた関数を試してみたら 500となりました。出荷日空白セルも合計に入れたいのですが それはFALSEとでます。 言葉が足りなくて申し訳なかったのですが、 データが5月10日まで入力されているとして、 5月10日時点で3月30日時点での棚卸をしたかったんです。 なかなかここで全部説明するのは厳しいと思いました。 そんな中考えてくださって本当にありがとうございました。

  • Terumaro
  • ベストアンサー率20% (6/30)
回答No.1

小生の無い頭を使って考えました。 以下のようにあるとします。 A B C 入荷日 金額 出荷日 2003/3/1 300 2003/3/3 2003/3/4 400 2003/3/4 500 2003/5/6 2003/4/4 500 2003/4/12 500 2003/6/12 セルD1に =OR(AND(A2<=37684,C2=""),AND(A2<=37684,C2<=37684)) と入力します。 これをD2以降にも連続コピーします。 そうすると、D列にTRUEやらFALSEやら現れます。 二つの条件に合致したものだけTRUEになっています。 で、上の例ですと、セルB7に =SUMIF(D2:D6,"TRUE",B2:B6) と入力します。 D2~D6までの中でTRUEとある位置と同位置の範囲B2~B6を足しなさい(日本語滅茶苦茶)という意味です。 これで上記の例ですと、700と出ます。 もっとスマートな方法もあると思いますが、参考になれば幸いです。

momotaroo
質問者

お礼

わざわざ考えてくださって本当にありがとうございます!! 説明不足で申し訳なかったのですが、データの列が15列くらいあるので、その都度列を挿入したりとかしないで 一発でだせる関数とかあるのかなと思い質問させて頂きました。 考えてくださって本当にありがとうございました。

関連するQ&A

  • エクセルで空白のセルのところだけの合計をだしたい

    エクセル2003です。 番号金額出荷日 1 1,000 17. 8.8 2 1,000 3 1,000 出荷日が空白のところだけの合計金額をだすには どうしたらいいでしょぅか?この場合合計金額は 2,000円になります。 よろしくお願いいたしますm(__)m

  • Excelで日付が入っていたら金額を合計したい

    Excel2007を使用しています。 支払い報告書をエクセルで作ろうとしています。 D列に金額を入れ E列に実際に支払った日付(10/18と入力します)を入力すると セルB2の支払済合計額に合計金額が入るようにしたいです。 またE列に日付を入力せずにいると セルC2の支払い予定額が入るようにしたいです。 なおE列には日付以外にキャンセルとか支払い不要とか 日付以外も入るので日付が入った場合のみ支払合計額に、 空白の時は支払い予定額に それ以外の場合はどこにも加算されないようにというのが希望です。 SUMIFなどを使って自分なりに関数を作ってみましたが イマイチ出来ませんでした。 よろしくお願いします。

  • EXCELでの条件付き合計

    EXCELで以下のような表を作成しました。 ・日付の行数はランダムです。 (無い日付もあれば複数行ある日付もあります) ・日付の列,金額の列にはそれぞれ”日付”,”金額”と名前をつけています。 ある日付からある日付までの金額の合計を計算したいと考えています。 SUMIF関数を使用すればできそうだということはわかるのですが, 日付の条件をどのように入力すればいいのかがよくわかりません。 どのように入力すればいいのでしょうか? 日付     金額 12月1日    123     12月15日    962    12月31日     56

  • エクセルで条件を複数選んだ合計値を出したいです。

    関数初心者です。 ネットや本で調べ、試行錯誤の結果何通りか関数(数式?)を試しましたが、一番求めているものに辿り付けませんでした。 本物の表はもっと項目がありますが、簡単にすると↓です。 「    A     B    C    D    E    F  1        5/1    5/2   5/2    5/3    5/4     ←出荷日   2        あ社  い社  あ社   あ社   い社    ←客先  3 No.12345   40     20    80      20           ←出荷数  4 No.67890                   20    50     ← 〃  5        40     20    80     40    50 」    ←出荷数の合計   ↑  オーダーNo. この表から、2007年5月に出荷した全体の数量を客先別に計算したいのです。(2007年を条件にすることはそんなにこだわっていません。) 今、とりあえず成功している式は、 =SUMPRODUCT((YEAR(B1:F1)=2007)*(MONTH(B1:F1)=5)*(B2:F2=A8),B5:F5) ※A8にあたるセルには客先名が入っています。 ※日付の書式は「日付」にしました。 何が問題かというと、この表は出荷する度に横に列を増やしていくので、YEAR、MONTHの範囲(シリアル値?)を広げたいのですが、(B1:BZ1)などと列を増やしてしまうと、「#N/A」になってしまいます。 その他にも色々試しました。 (例) =SUM(IF((B1:BZ1="2007/5/*")*(B2:BZ2=A44),B5:F5)) エラーは「#VALUE!」です。 日付の書式をかえてみたり、「"=2007/5/*"」を「"5/*"」にかえてみたりすると、何らかの計算はされることもありましたが、どこをどう計算しているのか求めている合計値ではない数値が出てきました。 また、思い切って出荷日の行を増やし、上段に「月」下段に「日」と分けてしまった方が、簡単でしょうか? ご回答お待ちしています。よろしくお願いします。

  • エクセル-数式-別シートリンク

    お世話になっております。 エクセル数式について質問です。 品名 個数 金額 入荷日 出荷日 備考 のり 52  500  10月8日      はり 250  30   9月4日 10月8日 pen 300   80   8月25日 10/21日 とあるとします。 別のシートに、入荷日10月分だけのリスト、 また別のシートに出荷日10月分だけのリストの金額の合計を リンクさせたいとおもいます。 その数式をぜひ教えていただければとても助かります。 よろしくお願い致します。

  • エクセルの条件付き書式のセルに数式がある場合

    エクセルの条件付き書式で、ある値以上の場合は、セルの色を変えたいと 考えていますが、セルに数式を入れているためか、値が入っていないのに セルに色がつきます。 具体的には下記に記します。 A1に金額、B1に個数でC1に合計金額を表示させて 合計金額の値によってC1のセルの色を、変えたいと考えています。 C1にはA1とB1に値が入っていない場合は、セルを空白にしたいため =IF(B1="","",A1*B1)という式を入れています。 そこで質問ですが (1)なぜセルが空白で値も入っていないのにセルに色がつくのでしょうか? (2)値が入っていない場合はセルに色がつかない方法はありませんでしょうか? よろしくお願いします。

  • 条件があったものだけ合計

    条件があったものだけ合計する数式を使用したいのですが うまくいかないので質問させてください。 エクセルのバージョンは2003を使用しています。 例えばA1に日付、B1にお店、C1に商品、D1に金額が入力されており、 以下100行まで同じ関係(但し日付はランダム、お店はランダム...)で入力されているとします。 そこでF1に、A1:C100の中で、 A1が○○、B1が○○、C1が○○の条件のときの D列つまり金額の合計を出力、という風にしたいのです。 分かりにくければ補足しますので、 どうか宜しくお願い致します。

  • ACCESSの空白をカウントする

    こんにちはAccessについて教えて下さい。 素人です宜しくおねがいします。 日付のデータが入るテーブルがあります。 この日付は物品の出荷の日にちと入荷の日にちを示しています。 入荷したら入荷日に日付を入れ、出荷したら出荷日に日付を 入れます。 在庫管理のため入荷日が入っているけれど出荷日を入力していない空白せるの数をVBAかクエリかWhere条件式でカウントしたいです。 調べたところクエリの集計のカウントでは空白セルをのぞいた数を数えてしまうようです。 ですから、Is Nullでも””””でも集計できなかったです。 どうすればよろしいでしょうかどうぞ宜しくお願いします。

  • エクセル 空白セルまでの合計値を求める方法

    こんにちは。こちらではいつもお世話になっています。 タイトルの通り、エクセルの空白セルまでのの合計値を求める方法を教えてください。 具体的には、以下の通りです。 ==========================    A     B     C    1 合計値   1  2        2            3        3    4 5        2 6 7        2 ========================== A1のセルにB1:B7までの範囲で、空白セルがあるまでの合計値を求める関数を入れたいのです。 上記の場合であれば、B1:B3まで(B4が空白セルなのでそこまで)の合計です。 空白セルはその時々にかわるので、範囲をB1:B7としています。 説明が不十分であれば、申し訳ございません。 宜しくお願いします。

  • Excelで別シートの合計を1箇所に持ってくる

    Excelで別シートにある1つのセル内に、 同じ日付のものは合計して入力するような方法はございますでしょうか? たとえば、Asheetで1日というならびに3つの違う金額が入っていた場合、Bsheetの1日という1つのセル内に、3つを合計して入力する。 Asheet 1日 1995 1日 7200 1日 1200 Bsheet 1日 10395 どうか教えてください。 よろしくお願いいたします。

専門家に質問してみよう