• ベストアンサー

日付でデータを抽出したい

A列には2007/10/1~2007/10/31と入力されていて B列にはランダムに数字が入っています。 yyyy/m/d~yyyy/m/dまでのB列の平均を求めたいです。 「yyyy/m/d」(検索する日付)は常に変えられるようにしたいです。 オートフィルタのオプションでも出来るのですが 値を求めて別セルに入力したいため それ以外の方法が知りたいです。 A列yyyy/m/dに隣接するB列の値だけなら VLOOKUP関数で求めたい日付をC1に入れて =VLOOKUP(C1,A:B,2)で求められるのですが 「yyyy/m/d~yyyy/m/d」の求め方がわかりません。 よろしくお願いします。

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

  • ベストアンサー
noname#64582
noname#64582
回答No.1

以下の形式でやってみました。 必要に応じてセルを書き換えてください。 A1 に 2007/10/1、そこから下に日付。 A31 が 2007/10/31 B1 から B31 までランダムな数字。 検索したい日付の入力セルを、 開始日:C1 、終了日:C2 としました。 C3 に =MATCH(C1,$A$1:$A$31,0) C4 に =MATCH(C2,$A$1:$A$31,0) C5 に =AVERAGE(OFFSET($B$1,C3-1,0,C4-C3+1,1)) C5が答となると思います。 もちろんC3やC4のセルは使わず、C5に一本化した式を書いても良いと思います。

sdfdfadgh
質問者

お礼

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

その他の回答 (2)

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

(1)日付が条件で範囲で固まっていたら、セル範囲を捉えるOFFSET関数も良いでしょう(#1のご回答) (2)固まっていない場合は1行ずつ、条件判定します。 その定石はSUMPRODUCT関数か、配列数式です。 本件は関数式の中では、何日より以後、何日より前の2条件にならざるを得ません。(#2のご回答) 配列数式ではAVERAGEが使えます。 (3)本件は日付で条件をつけるのですが、エクセルは日付はセルの値としては、日付シリアル値という正整数であることをご存知か。ですから、下記と変わらないタイプなんです。1や2が39356(2007/10/1の場合)になっただけです。 例データ A列  B列 参考C列 1 1 2 2 3 3 3 4 4 4 5 5 5 6 6 7 7 1 8 2 9 3 1 1 4 2 2 5 3 3 6 4 C列合計 18 =AVERAGE(IF((A1:A13>=3)*(A1:A13<=5),B1:B13,"")) で 結果 3 ーー 日付定数は=DATE(2007,10,1)とかせるに日付を入れてそれを使う。

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

noname#204879
noname#204879
回答No.2

    D      E    F 1 開始日   終了日   平均 2 2007/10/10 2007/10/20  15 3 4 開始日   日数 5 2007/10/10     11  15 F2: =SUMPRODUCT((A$1:A$31>=D2)*(A$1:A$31<=E2),B$1:B$31)/(E2-D2+1) F5: =SUM(OFFSET(A$1,MATCH(D5,A$1:A$31,0)-1,1,E5,))/E5

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

関連するQ&A

  • 検索したい日付からデータを抽出したい。

    こんにちわ。 キャンペーンが何日~何日までどういった内容がある、という一覧を作成しています。 Aの列が開始日、Bの列が終了日、Cの列がキャンペーン内容、です。 検索したい日付をD1のセルに入力したら、その日付に該当するキャンペーンすべてを別のシートに抽出できないでしょうか・・・ オートフィルタで抽出は出来るのですが、日付を入力しただけで抽出 させたいのですが、無理でしょうか・・・ よろしくお願いします。

  • 今日の日付のデータをすばやく抽出するには・・

    売上日報をエクセルで作っています。 A列に1から順にNOを入れています(LOOKUP関数を使うためです) B列に日付を入れています。 C列に社名を入れています。 その他の列にもいろんなデータが入っています。 本日の日付だけをすばやく抽出したいと思うのですが、どうすれいいか分かりません。 オートフィルタで今日の日付を選ぶ方法はやれます。 でも、もっと早く抽出できる方法はないでしょうか? 数ヶ月分のデータが入っているため、オートフィルタの三角をおしたあと、今日の日付を探すのに結構手間取ります。 もっとすばやく抽出したいのです。どんな方法でもいいです。どなたか教えて下さい。

  • VBAを利用しオートフィルタで日付抽出でエラー

    会員管理表を作っています。 集計シートと入金管理シートがあり、入金管理シートに入金日を 入力させ集計シート上でオートフィルターを実行し、表示された データだけを入金管理シートに抽出し印刷するというマクロを 作っています。 問題は、入金管理シートに"2007/4/27"と入力し、このセルを Stringで宣言した変数に格納すると値が"2007/04/27"となります。 オートフィルタでこの変数を使用すると、当然2007/04/27で検索され ますが、集計シートの日付は"2007/4/27"と表示されていてヒット しません。月や日付の04や05の0が入らないように変数にセット する方法はありますか?ちなみにどちらの書式設定は、日付で yyyy/m/dを指定しています。教えてください。 集計シートはこんな感じです。入金日でフィルタをかけてます  A    B   C    D 会員番号 会員名 入金日   入金額 0001   ぐうた 2007/4/27 1,000 0002   ぐうこ 2007/5/1  500 管理シートはこんな感じです。入力時には04と入力せず4と入力 しています。 【2007/4/27】入金データ A     B   C 会員番号 会員名 入金額 0001   ぐうた 1,000

  • オートフィルターで抽出されたデータの参照方法について

    1000件以上のデータをA,B、C列にオートフィルターをかけて抽出されたデータのA,B、C列およびD列目の値を参照する式を組みたいのですが、当然のことながらオートフィルターをかける都度、表示されるセル番地が変わるので式がくめません。 多分、マクロでコピーしてどこかにペーストすればいいのでしょうが、まったくわかりません。お教えください。

  • エクセル オートフィルタを使わないで計算したい

    例えば A列には1,2,3、・・・とランダムに数字が入っていて C列にも1,2,3・・・とランダムに数字が入っています。 B列D列も計算式を用いてランダムに数字が入っています。 なので2つのデータを並べています。 やりたいことは 「A列とC列に「2」ならば右に隣接する整数の数を求めたい」です。 オートフィルタを使うと1つのデータしか取り出せなくなってしまいます。 A列の「2」に隣接するB列の整数の合計と C列の「2」に隣接するB列の整数の合計の合計額がほしいです。 なにかいい方法はありますでしょうか? よろしくお願いします。

  • エクセルのデータ抽出について

    基本的な内容かもしれませんが、どうしてもわからないので教えてください。   A B C D 1 1 b 3 c 2 2 t 4 y 3 3 r 3 o 4 4 l 5 p 5 5 k 3 w 上記のようなデータベースがあったとします。このシートと異なるシートのあるセルにたとえば3と入力すると   A B C D 1 1 b 3 c 2 3 r 3 o 3 5 k 3 w のようにC列が3である行が抽出され、なおかつA列の昇順で並ぶということをしたいのですが、vlookup等ではうまくできません。 フィルタを使用せずに実現したいのです。お願いします。

  • SUMIFSに日付を使いたいのですが…

    どなたか助けて下さい。 現在のデータとして複数のシートがあり、年月で纏める為にSUMIFSを使おうと考えております。 1枚目のシートには日付が打ち込んであり、年月日まで入っています。(yyyy/m/d) Sheet1 A                 B 2008/11/29(yyyy/m/d)  30 2008/12/29(yyyy/m/d)  50 2008/12/31(yyyy/m/d)  100 2枚目のシートには年月が入力されてあり、「200812」と数字が入っております。 A       B 200812   ? 最終的には2枚目のBに12月の合計を纏めたいので、1枚目の日付を変更したいのですが 書式設定の表示形式のユーザー定義で「yyyymm」にすると表示は「200812」 ですが、当り前の事ながら、データとしてはそのように反応してくれません。 (合計値として150となるようにしたい) そこで、これをどのように結び付けるのか、また別の方法があればと思い どなたか教えて頂ければ幸甚です。

  • エクセルのデーター抽出で悩んでおります、皆様のお知恵をお貸しください。

    エクセルのデータ抽出で悩んでおります、皆様のお知恵をお貸しください。 データベースとして作ってある表で、”列A”に入っている日付以上(形式2009/11/27)、”列B”に入ってる日付以下と言う条件で、”列D”から”列R”に入っている日付データを探し、”列C”に入れるという事をしたいのですが、出来るだけ簡単な方法があればお教え下さい。 〔列A2009/11/27〕 〔列B2011/1/27〕 〔列CXXXX/XX/XX〕 〔列D~Rは日付データ〕 列Aに入っている日付以上、列Bに入っている日付以下という条件で、列D~列Rに入っている日付データの中から条件に合致するデータを探し、空白の”列C”に合致したデータを入れるというができますでしょうか。 (あくまでもデータベースとして表が出来ているので、並べ替えてオートフィルタ機能を使うという事はできません。)

  • 曜日を条件に検索をしたいです。

    A列には「yy/m/d (aaa)」形式で(今日なら07/10/25 (木)) 土、日、祝日を抜いた日付が A1セルからA1000セルまで入力されています。 (データは日々増えていきます) B列にはランダムな数字が入っています。 やりたいこと1 オートフィルタで 「(月)」のデータを摘出したいです。 オートフィルタのオプションで(月)を含むで検索しても 何もヒットしません。 やりたいこと2 月火水木金それぞれのB列の合計が知りたいです。 SUMIF関数で「=SUMIF(A:A,"月",B:B)」 と入力しても0になってしまいます。 よろしくお願いします。

  • Excelで西暦の日付から「和暦のみ」を抽出する方法を教えてください。

    エクセル初心者です。 エクセルのオートフィルタを使って、「平成19年」「平成20年」「平成21年」ごとに表示させたいのですが…。 セルには以下のように日付が入力されているとします。   A      B      C 2007/3/14 2007/3/16 2008/3/18 2008/3/14 2009/3/16 2009/3/18 これを書式設定で「平成19年3月14日…」と和暦で表示してみても、オートフィルタでは日ごとになるだけで、「年ごと」にはなりません。 そこで、B列にA列のデータから和暦のみを抽出したらいいのではないかと考えたのですが…初心者ゆえにその方法を思いつくことができません。 西暦の日付から「和暦のみ」を抽出する事はできるのでしょうか?

専門家に質問してみよう