• ベストアンサー

エクセル複数条件検索 日付~日付も検索

いわゆる在庫管理表です。 A列 B列 C列 D列 数量 品  倉庫 日 10 すいか ア 7/18 15 ブドウ イ 8/20 5 すいか イ 9/30 20 ブドウ ア 10/31 という表があります。 これを 品   倉庫  ブドウ イ   を選ぶと 先月(7/1~7/31)  数量 0 今月(8/1~8/31)  数量 15 1ヵ月後(9/1~9/30) 数量 0 2ヵ月後(10/1~10/31) 数量 0 というような表にしたいのですが、 ブドウ で イ のものはDSUMでできるのですが、 さらに検索条件に  先月 7/1~7/31 今月 8/1~8/31  という条件を加えるのにはどのようにしたらよいのかわかりません。 現状日付はTODAY関数とDATE関数を組合せて表示させています。 よろしくお願いします。

noname#19714
noname#19714

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

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

こんにちは~ DSUM関数を使って、「先月」「今月」「1ヵ月後」「2ヵ月後」を一度に集計するためには、フィールド名も含めて、抽出条件をそれぞれすべて指定してやる必要があるのが厄介ですよね。 もっとカンタンなやり方があるかもしれませんが、一応参考までに以下の方法を試してみてください。 F列からK列を集計に使います。 F2 に「先月」、F3 に「今月」、F4 に「1ヵ月後」、F5 に「2ヵ月後」と見出しを入力(もちろん「」は不要。以下同じ) G1に「日」、H1 に「日」、I1 に「品」、J1 に「倉庫」、K1 に「数量」とフィールド名を入力 G2に =">="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+ROW(A1)-2,1),"mm/dd") と入れて、G5 までフィルコピー H2に ="<="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+ROW(A1)-1,0),"mm/dd") と入れて、H5 までフィルコピー I2 に「ブドウ」、J2 に 「イ」と入力 I3に =I$2 と入れて、右の J3にフィルコピー そのまま( I3 と J3 が選択された状態で )5行目までフィルコピー(I列・J列の数式を同時にコピー) K2に =DSUM($A$1:$D$500,$A$1,$G$1:J2)-SUM($K$1:K1) と入れて、K5までフィルコピー 以上です。 I2 に 「品名」、J2 に 「倉庫」を入力するだけで、「先月」から「2ヵ月後」まですべて集計できる、と思うのですが・・・あまり深く考えていないのでよく検証してみてください。 * * 関数では、他に SUMPRODUCT関数を使ってもできると思います。 これも一応参考まで。 H1 に 「品」、I1 に 「倉庫」と見出しを入力 H2 に 「ブドウ」、I2 に 「イ」と条件を入力 F3 に 「先月」、F4 に 「今月」、F5 に 「1ヵ月後」、F6 に 「2ヵ月後」と見出しを入力 G3 に =TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+ROW(A1)-2,1),"yyyy/mm") と入れて、G6までフィルコピー 日付の表記は↓のようになります(条件をへらすため)。 先月   2005/07 今月   2005/08 1ヵ月後  2005/09 2ヵ月後  2005/10 H3 に =SUMPRODUCT(($B$2:$B$500=$H$2)*($C$2:$C$500=$I$2)*(TEXT($D$2:$D$500,"yyyy/mm")=G3),$A$2:$A$500) と入れて、H6 までフィルコピー 以上です。 データは、2行目から500行目までの範囲内と仮定しています。それ以上ある場合は範囲を広げてください。 ただし SUMPRODUCT関数の場合、あまり範囲を広げすぎると(データが多いようだと)処理が重くなるかもしれません。

noname#19714
質問者

お礼

詳しく説明いただきありがとうございます。 独学なもので、>=8/1 <=8/31 を today関数とdate関数で組合せての式の仕方もわからなかったんです。””が必要だったんですね。。。。 さらなる質問で恐縮なのですが、 日を表示する式に、ROW関数が入っているのですが、 この関数の役割がよくわかりません。 A1には数量って言葉があり、A2以下には各数値がはいっていくのに、それらは影響していないようですよね?入っているほうが日付が上手くいくなぁっていう感じはするのですが‥ 関数ヘルプを読んでも理解ができなかったので、 お時間がありましたら教えてください。

その他の回答 (3)

  • tona-tona
  • ベストアンサー率34% (8/23)
回答No.4

>日をわけてなかったんです。 なるほど!そういう事だったんですか。 私は、dsumを教えてもらって勉強になったけど、 何が問題なのか不思議でした。 ところで、私は#2の方ではなくて、#1ですが、 row(a1)はフィルコピーする為に使っているんですよ。 もう、#3の方のレスを読んで推察済みかなとは思いますが、 最終的には =">="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())-1,1),"mm/dd") =">="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY()),1),"mm/dd") =">="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+1,1),"mm/dd") =">="&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+2,1),"mm/dd") としたい訳ですが、 この-1、0、+1、+2を作るためにrow()を利用されているのです。 rowは行数を取得するので、pudding-puddingさんがおっしゃるように、 そのセルに入力されている値は関係がありません。 試しにどこかのセルに=row(a1)とすると、1が返ってきますよね。 row(a1)の入ってる数式を下へフィルコピーすると a1の部分がa2、a3、a4となって、 それぞれ、1,2,3,4と返ってきます。 そこから、-2することで、#2の方は、-1、0、+1、+2を作られています。 ちなみにrow()だとそのセル自身の行を返すので、 row(a1)-2をrow()-3に変えて下へフィルコピーでも同じ事になります。 ただこれだと、2行目からの入力に限ってしまいますので、 a1の方が良いですね。 横へのフィルコピーで数を増加させたいときは=COLUMN()を使います。 1ずつ増加させたいときは、COLUMN()に引いたり足したりして、 2ずつだったらCOLUMN()*2に引いたり足したりして、作ります。 あぁ、的外れなレスを付けていないかいつも心配。大丈夫かな。

noname#19714
質問者

お礼

なるほどぉ!よく理解できました☆彡 ヘルプにもこういう感じで丁寧に説明してくれればありがたいのですよね。 本当にありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

#1のかたので答えは出てると思いますが... 品 倉庫 日 日 で 始めの日=DATE(YEAR(TODAY()),MONTH(TODAY())+月,1) 終わりの日=DATE(YEAR(TODAY()),MONTH(TODAY())+月+1,0) ですね。 月の所は前月なら-1,今月なら0,来月なら1としてください。

noname#19714
質問者

お礼

回答いただきありがとうございました。

  • tona-tona
  • ベストアンサー率34% (8/23)
回答No.1

数式初心者・マクロ初級者です。(万年) 識者の方のレスがつくまでの場つなぎと思ってください。 dsumって初めて知りましたが、 Databaseをこう作って、 数量   品   倉庫   日 1 すいか   イ  7/5 4 すいか  イ  8/4 10 すいか ア  7/18 15 ブドウ  イ  8/20 100 すいか イ  6/1 400 すいか  イ  6/15 5 スイカ イ  9/30 20 ブドウ ア  10/31 40 すいか ア  7/31 100 すいか イ  8/11 400 すいか イ   8/1 Criteriaをこうして 品 倉庫 日 日 すいか イ >=8/1 <=8/31 fieldを 数量 にしたら =dsum(Database , フィールド, Criteria)で ちゃんと、504って出ましたよ。 TODAY関数とDATE関数を使っててもちゃんと表示されました。 何がわからないのかが分からない。。。 私が何か勘違いしてるのかな。 ちなみに、 私は、きっちり月末区切りの集計を行う時は、 =month(セルアド)で、月を表示する列を作成し、(非表示) マクロでガーーッと書き出してました。 (データ表の最終行をsubtotalで合計にしておき、  オートフィルタをかけて、最終行を集計表へ写し取っていく。  オートフィルタの引数は、集計用の表から取得して回す。) dsumなんて便利なものがあったんですね。

noname#19714
質問者

お礼

早速の回答ありがとうございます。 なるほど!日をわければよかったんですね♪ 日をわけてなかったんです。 1つのセルで式を組んで、できないものかと悩んでいたものですから‥ 独学なものでこういったちょっとした見方の変え方ができなかったんです。 面倒くさがり過ぎました。 ありがとうございました。

関連するQ&A

  • エクセル関数で複数条件を 探す

    表1で、A1 りんご B1 あまい       A2 ぶどう B2 まずい という表があります。   表2で、A1 りんご少しあまい       A2 ぶどうとてもまずい という表があります。  表1の「りんご」と「あまい」のふたつの条件を満たすものを表2のA列で探すという作業をしているのですが、関数を使って簡単に探す方法はありますか?  ちなみに今は 表1のA1とB1のふたつの条件を「りんご*あまい」としてCtrl+Fで 表2のA列で検索して 一致したら ○を 横につけていくという地道な作業をしています。4000件近くありますので何かいい方法ありましたらよろしくお願いいたします。

  • EXCELのDSUM関数で集計条件に日付を入れると数字が消える

        B列      C列     D列   E列      F列      G列 1行  日付      区分    金額   集計する条件 2   2000/1/1   A社   1000    区分     日付      日付 3   2000/1/10    B社    500   A社    >=2000/1/1  <2000/2/1 4   2000/1/15    A社    300    5   2000/2/5   A社     200    集計結果 6                        =DSUM(B1:D5,3,E2:G3) 上記のような表をEXCELで作成しました そのうちA社の1/1~1/31の金額をDSUM関数を利用して集計したく 上記のようにDSUM関数に引数を入力しました しかし集計条件が区分のみ(E2:E3)だとA社の2/5までの合計額1500が反映するのですが、日付を入れた途端に0になってしまうのです ちなみに、一例として日付→商品区分に直して日付の代わりに 「機械」「部品」といった文字を入力してみると ちゃんと条件通りの集計をしてくれます 日付の入力のしかたに間違いがあるのでしょうか? テキスト見ながらちゃんとやってると思いこんでるだけで 落とし穴にはまってるのだと思います 是非良きアドバイスをお願いします  

  • 複数条件の集計について、教えてください。

    EXCEL初心者のため、どうか教えてください。     品名   サイズ  数量 ジャケットA  S   2 ジャケットA  M   3 ジャケットB  S   5 ジャケットB  L   5 このような表のとき、例えば「ジャケットAのSサイズは2つ」というように条件が複数ある場合の集計方法はないのでしょうか?? 集計結果を別表に作成したいのですが、DSUM関数を使おうとすると、上手くいきません。どうか、教えてください。

  • 行抽出・関数・複数条件

    以下の質問をみて、一つの条件のものを作ることは出来ました。 しかし、AND()やCOUNTIFS()などを用いながら自分なりに複数条件の行抽出をしてみようとトライしてみたのですが、きちんとした行を返してくれません。 どなたか、以下の質問を少し変えて、 ************************************************************** <A列> <B列> <C列> 7/1 りんご 100円 7/2 ぶどう 200円 7/2 すいか 300円 7/3 みかん 100円 このような表があって、100円とりんごを含む行をそのままの形で、 別のセル(同じシート内)に抜き出したいのですが。 7/1 りんご 100円 ************************************************************** といった表示をする関数を書いていただけないでしょうか。 よろしくお願いします。 http://okwave.jp/qa/q3200952.html

  • Excelで複数条件を満たし残高を計算する関数

       A列     B列  C列     D列     E列  F列    日付     No. 商品名  仕入/販売  金額 残高 1  2010/12/1  101  りんご   仕入  ¥1,000    ¥- 2  2010/12/2  101  りんご   販売  ¥1,000    ¥- 3  2010/12/3  122  みかん   仕入  ¥1,200    ¥400 4  2010/12/4  122  みかん   販売  ¥800     ¥- 5  2010/12/5  135  バナナ   仕入  ¥1,300    ¥800 6  2010/12/6  135  バナナ   仕入  ¥300     ¥- 7  2010/12/7  135  バナナ   販売  ¥800     ¥- 8  2010/12/8  148  ぶどう   仕入  ¥2,000    ¥- 9  2010/12/9  148  ぶどう   販売  ¥1,500    ¥- 10 2010/12/10  148  ぶどう   販売   ¥500 ¥- 上記のようなEXCELの表があります。 B列No.(第一条件)、C列商品名(第二条件)が一致するものを 仕入から販売を引いてF列のような数字になるように残高を出したいです。 どんな関数でも構いません。 関数でできる方法があれば教えてください。 実際のデータ量が2000行くらいあるので手作業でするのが大変で…。 よろしくお願いしますm(_ _)m OS:WindowsXP Office:2007

  • エクセル関数:複数の条件を満たす行の合計

    例えば下記の様な表の場合に、A行が”2”で、B行が”桃”の行のCの値の合計を出したいのですが。 A   B     C 1 2 桃    10 2 2  蜜柑 10 3 3  蜜柑 10 4 3  桃 10 5 2  桃 10  6 4  蜜柑 10 SUMIFで、出来ないかなと思ったのですが複数の条件の場合というのがヘルプに出ていません。 エクセル本を見たところDSUMというやり方があるのですが、これだと数式だけでなく欄外に見出しと条件の入った表を別途作成しなければならないようです。 色んな場合の合計を出すのに、場合の数だけ見出しと条件の入った表を作るというの方法しかないのでしょうか? もし関数の数式だけで上記の値を出す方法を御存知の方、教えて下さい。 「DSUMで、見出しと条件の入った表を作ってしか出せない」というお答えでもけっこうです。出来ないと分かれば、簡単に数式だけで出すのは諦めて、DSUMを使います。

  • Excel データの個数を複数条件付きでカウントしたい

    OS:XP Ver.:Excel2003 Excelの関数で質問です。 いろいろ調べたのですがどうしてもわかりません。 お知恵をご拝借下さい。 A B C D 1月 2月 3月 りんご 250 0 300 みかん 150 80 0 りんご 88 150 200 いちご 0 300 85 ぶどう 0 350 89 (確認画面にするとずれてしまいますが、A列には品名、B~D列には月が入るようになっています。) 上記のような元データがあり、(実際はもっとたくさん) 1月    2月    3月 りんご みかん いちご ぶどう (こちらもずれてしまいますが、それぞれの月の品名ごとの集計を入れたいのです。) のような表を完成させたいと思います。 (1)表に入れるのは、合計数量ではなく【データの個数】です。 1月のりんごは2、みかんは1、という感じです。 ただし、0はカウントしたくないので、1月のいちごとぶどうは0を 返してほしいのです。 countifやsumproductなど考え付くあたり試してみましたが、うまくできません。 どういう数式(関数)を入れればよいのでしょうか? (2)2月以降のデータ範囲を指定する場合はどうすればいいのでしょうか?  1月ならA2:B6とするのかもしれませんが、2月の場合は1月列(B列)が不要ですよね?

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

     A列 B列 C列  ア県 ア市 ア町  ア県 ア市 ア町  ア県 ア市 ア町  ア県 ア市 イ町  ア県 ア市 イ町  ア県 ア市 ウ町  ア県 イ市 ア町  ア県 イ市 ア町  ア県 イ市 イ町 という表があります。 「ア県ア市ア町」の個数を関数で表すには、 どのようにすればよろしいでしょうか? よろしくお願いいたします。

  • エクセル 検索した値の列の一番上をかえすには?

    4×5の表にアルファベットがランダムに重複なく入っている表で、指定したアルファベットのがどの列にあるか求めるにはどうしたら良いでしょうか。 列のタイトルを「あ、い、う、え、お」、 行のタイトルが「ア、イ、ウ、エ」の表で、例えばaがう-イのにあるときに、「う」という値を表示したいです。 A B C D E F 1 □ あ い う え お 2 ア m 3 イ k a … 例:検索値A→結果う よろしくお願いします。

  • 複数の検索条件のカウントを求める

    COUNTIFの検索条件を複数指定するにはどうすればよいのでしょうか? 下のような表から条件に見合ったものをカウントします。 日付     商品     数量 金額 2001/4/1  婦人用ブラウス 13  4000 2000/4/4  紳士用ネクタイ 15  2000 2000/4/10 婦人用ソックス  30  500 2000/4/12 紳士用ソックス  5   500 2000/4/15 婦人用ブラウス  10  2000 2001/4/20 婦人用ブラウス  13  4000 2001/4/22  紳士用ソックス 13  500 このような表から2000/4/15以前の婦人用とつく商品の個数 を求めるにはどうすればよいのでしょうか 検索条件としては <=2000/4/15 婦人用* でいけると思うのですが 関数の適切な組み合わせが分かりません。 いろいろやってみたのですが。 どうかよろしくお願いいたします。

専門家に質問してみよう