• ベストアンサー

エクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

例えばこんなデータなのですが、 2002/07/01 99 25 36 2002/07/05 55 33 25 2002/08/01 80 20 51 日付の入っている列を検索して、2002/07/01から2002/07/31 の範囲ならば、その行のデータを別のシートに抽出したいのですが、 日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら between 9999/99/99 and 9999/99/99って感じで簡単にできるの ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って >=2002/07/01 <=2002/07/31 と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して くれると考えたのですが、なぜかダメでした。 (↓こういう入力をしました) =IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんばんは! =IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません") おしいですね(^^; 日付をそのまま入力してしまうと数式上では  2002/7/31 → 2002÷7÷31 になってしまいます。 ダブルクォーテーションで括って(文字列)入力して それを数値化しましょう! =IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません") 文字列 ="10" に対して 乗算 *1 としても数式が なり立ち文字列の数字が数値化されます。="10"*1 ------------余談-------------------------- ご質問の条件例の場合特例で 2002/7でればOKなので =IF(TEXT(Sheet2!A1,"yyyym")="20027",Sheet2!A1,"該当月ありません") でも可能ですね!

xxxgin
質問者

お礼

本当にほんとうに有難うございます。\(^O^)/ 回答の説明もわかりやすくて、ほんとに助かりました。 実を言うと、今回の問題で2時間もパソコンと格闘して しまったのです。もっと早く聞けばよかったです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

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

日付によるオートフィルタの実例を挙げます。 テストデータ(A1からB13) 日付      場所 2002/2/21    福島 2002/2/25    仙台 2002/3/25    青森 2002/4/15    秋田 2002/4/16    函館 2002/5/1    盛岡 2002/3/18    宇都宮 2002/3/15    大宮 2002/1/21    浦和 2002/2/3    池袋 2002/3/26    新宿 2002/4/1    品川 条件(E1からF2) 日付       日付 >2002/3/25 <2002/4/16 結果(D9からE15) 日付      場所 2002/4/15     秋田 2002/3/26     新宿 2002/4/1     品川  操作 データ-フィルタ-フィルタオプションの設定-指定した範囲 リスト範囲    $A$1:$B$37 検索条件範囲   $E$1:$F$2 抽出範囲     $D$9:$E$18 OK 直接別シートSheet2の範囲を指定できないので Sheet2のA1とB1に =Sheet1!D9、=Sheet1!E9 などを入れ適当行数に複写しておく。

xxxgin
質問者

お礼

お礼が遅くなってすいませんでした。 回答ありがとうございます。大変参考になりました。 実を言うと、関数を使ってファイルをつくるのは自分 なのですが、個々のデータを実際に入力するのは、 別の人なのです。ほとんど、パソコン音痴な人が使って データ入力してもらうので、入力セル以外は、シート保護 しています。シート保護するとオートフィルタは使えなくなって しまうんですね。。。

全文を見る
すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こんにちは。 普通に考えると、1行目にタイトル行(フィールド名)を入れてから、 1.メニューのデータ-フィルタ-オートフィルタ 2.日付データの▼でオプションを選択 3.2002/7/1 以上 AND 2002/7/31 以下でフィルタ 4.コピーして好きな所に貼り付け で良いように思います。 他の方の回答で解決してるでしょうけど、関数例も、もうひとつ。 =IF(AND(A1>=DATEVALUE("2002/7/1"),A1<=DATEVALUE("2002/7/31")),A1,"該当月ありません")

xxxgin
質問者

お礼

お礼が遅くなってすいませんでした。 回答ありがとうございます。大変参考になりました。 実を言うと、関数を使ってファイルをつくるのは自分 なのですが、個々のデータを実際に入力するのは、 別の人なのです。ほとんど、パソコン音痴な人が使って データ入力してもらうので、入力セル以外は、シート保護 しています。シート保護するとオートフィルタは使えなくなって しまうんですね。。。関数例はホントに助かりました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

日付をIF関数内で使用するときには、DATE(年,月,日)で日付シリアル値に変換して指定する必要があります。 =IF(AND(Sheet2!A1>=DATE(2002,7,1),Sheet2!A1<=DATE(2002,7,31)),Sheet2!A1,"該当月ありません")

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [Excel2000]指定日付範囲でデータを絞り込みたい

    お世話になります。 指定日付範囲でデータを絞り込みたいのですが、いろいろWeb情報を巡回しても解決しないので教えてください。 例えば、A列が日付形式、B列が数値形式で入力されたシートがあった場合、指定した日付範囲のみ行を絞り込んでシートに表示させたいのですが、どのような方法が考えられるのでしょうか? 次のようなデータがシートに入力されている状態で、2000/01/01から2000/06/30までの日付でデータを絞り込みたい。 A列     B列 2000/01/01  1 2000/02/01  2 2000/03/01  3 2000/04/01  4 2000/05/01  5 2000/06/01  6 2000/07/01  7 2000/08/01  8 2000/09/01  9 2000/10/01  10 2000/11/01  11 2000/12/01  2 希望する結果は A列     B列 2000/01/01  1 2000/02/01  2 2000/03/01  3 2000/04/01  4 2000/05/01  5 2000/06/01  6 よろしくお願いします。

  • 日付によるデータ抽出について

    日付によるデータ抽出について 環境: ACCESS2000 状況: メインフォーム(テキスト期間A、テキスト期間B、テキスト品番、検索ボタン)    サブフォーム(データシート)    管理テーブル( 品番  /  レンタル日  /  返却日)    ※管理テーブルは他テーブルのコピー用 やりたい事: 簡潔にいうと期間と品番による抽出。       但し、テキスト期間Bが空白の場合、テキスト期間A以降のデータ抽出。          テキスト期間Aが空白の場合、テキスト期間B以前のデータ抽出。       さらに、テキスト品番が空白の場合、期間のみでの抽出。    コード: Private Sub 検索ボタン_Click()  Dim db As DAO.Database   Set db = CurrentDb   db.Execute "DELETE * FROM 管理テーブル"   db.Execute "INSERT INTO 管理テーブル SELECT * FROM 他テーブル"  Dim 抽出条件 As String   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=True And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[レンタル日] <= '" & Me!テキスト期間A & "'"   End If   If IsNull(Me!テキスト期間A)=True And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[レンタル日] >= '" & Me!テキスト期間B & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[品番] <= '" & Me!テキスト品番 & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=True And IsNull(Me!テキスト品番)= False Then    抽出条件 = "[レンタル日] >= '" & Me!テキスト期間A & "'" And "[品番]='" & Me!テキスト品番 & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= False Then    抽出条件 = "[レンタル日] Between " $ Me!テキスト期間A & " & Me!テキスト期間B And "[品番] = '" & Me!テキスト品番 & "'"   End If Me!サブフォーム.Form.Filter = 抽出条件 ← 実行時エラー2465 指定した式で参照されている'サブフォーム'フィールドが見つかりません。 Me!サブフォーム.Form.FilterOn = True End Sub 上記エラーが出てしまうのですが、まだまだ未熟で どこが悪いかわからなくて困っております。 間違っていたりと上手くないコードだとは思いますが ご教授の程宜しくお願い致します。   

  • エクセルで抽出データを削除修正する方法

    エクセル2003で在庫管理を行おうと思います。 シートBに管理番号の他に個別データを入力し、シートA上に入力した管理番号でシートB上の該当データを抽出、シートA上の一覧表に表示させるようにしたいと思います。 シートAに入力した管理番号でシートB中の中からLOOKUPで指定条件に該当するデータを抽出、リンク貼り付けで一覧表(シートA)に表示させる方法です。 該当データをシートAで確認後、売却や修正判断し、シートBのデータを削除又は修正を行いたいと考えております。また新規データ追加をシートA上からシートB最終行に追加したいと考えております。 BVAなら可能な気もしますが、まだ勉強中で役に立たず、関数での処理方法をお願いします。 質問1 シートB上で検索を掛ける方法もあるでしょうが、シートA上で削除又は修正できないでしょう       か?又はシートA上から目標のシートB該当行にジャンプする方法 質問2 シートA上からシートB上の最終行に新規データを追加又はシートAから最終行にジャンプする方法 以上、よろしくお願いします。

  • エクセルデータ抽出方法を教えてください

    エクセルでのデーター抽出方法を教えてください、シート1:A1にUA1と入力し、シート2:A列にはUA1・・・・複数のデータが縦に並んでいます、シート1:A1に入力したデーターを元にシート2:A列を検索し該当するデータの抽出を行いたいです、VLOOKUPではうまく行きません教えてください

  • EXCEL:ゼロ以外のデータを詰めて抽出する方法

    初めて投稿します。よろしくお願いいたします。 EXCEL2000を使用しています。 オートフィルタを使わずに 関数でデータを抽出する方法で悩んでいます。 下記<データ>が存在しています。 2行目がゼロ以外のものを、 別シート<抽出>に上から詰めて抽出したいのです。 <データ>   A列 B列 C列 D列 E列 1行 1  2  3  4  5  ←日付 2行 5  3  0  2  0  ←数字 <抽出>別シート   A列 B列  1行 1  5 2行 2  3 3行 4  2   ↑  ↑   日付 ゼロ以外 関数については中級レベルだと思います。 いろいろ試したのですが、関数を組み合わせてもなかなかうまくいきません。 どなたかご教授いただけないものでしょうか? よろしくお願いいたします。

  • エクセル フィルタオプションで 特定の文字列を含む行を全て抽出する方法がわかりません

    エクセル2002を使用しています。 エクセルフィルタオプション設定で、特定の文字列を含む行を全て抽出する方法がわかりません。 たとえば sheet1    A    B    C    1 項目1 項目2 項目3  2  あ   い    う    3  う        あ    4  え        い 5      う       Sheet2   A         B         1 抽出文字列 2 あ  3   4 (計算式) 5 (以下抽出結果)   上記のようなデータがあり、sheet2!a5以降に「あ」が該当する行を全て抽出するといった式を組みたいのですが、 Sheet2 a2に抽出文字を入力し、a4に「=or(sheet1!a2=a2,sheet1!=a2,sheet1!=a2)」といった検索条件式を組み、フィルタオプションで、 ・リスト範囲 Sheet1!$a$1:$c$5 ・検索条件範囲 $a$3:$a$4 ・抽出範囲 $a$5  と指定するのですが、うまく抽出できません。 ちなみに抽出対象が文字列でなく数字なら(たとえばSheet1のデータの文字をあ→1 い→2のように全て数字に置き換えてSheet2!a2に1を入力)抽出できるのですが・・・ 文字列をセル参照して条件式を組む場合に何か気をつけることがあるのでしょうか?文章が長くなってしまい申し訳ありません。良い方法があればご教授お願いします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • Excel 該当データ数の抽出方法(日付)

    Excel 該当データ数の抽出方法(日付) <元データ>  A    B      C 1 氏名  開始日  終了日 2 3 青木 2010/3/1 2010/3/10 4 石田 2010/3/1 2010/3/20 5 鈴木 2010/3/3 2010/3/7 6 佐藤 2010/3/1 2010/3/3 7 田中 2010/3/5 2010/3/17  上記のような元データがあった場合に、各日に実施されているデータ数(開始日~終了日の間 に当たるデータ数)を以下のように抽出したいのですが、その方法を教えていただけないでしょうか。抽出先は同じシート内でも、別シートでもいいのですが。 <抽出>    A      B 1  日付    該当数 2 3 2010/3/1   3 4 2010/3/2   3 5 2010/3/3   4 6 2010/3/4   3 7 2010/3/5   4  よろしくお願いします。 

  • EXCELでデータを抽出してコピペしたいです

    指定した日付より、それ以前の誕生日(指定日も含む)の人だけを抽出してコピペしたいのですが WORKBOOK1のSHEET1(名簿)のH列に生年月日(他の列にもデータあります) データは、1200件(行)あります。 WORKBOOK2のSHEET1(該当者)名簿と配列は同じです。 A1に指定の日付をいれます。 WORKBOOK1のSHEET1(名簿)より抽出したデータのペースト位置は、A3からです。 VBAで可能でしょうか?

  • Excelで特定の日付範囲のデータの合計を出すには

    初めて質問させていただきます。 さまざまなホームページ、掲示板などを巡ってみたのですが解決できなかったため お力を貸していただけたらと思います。 1シート目がこのようなデータ表になっているとします。  A    B     C   111 2011/4/30 2,000 125 2011/4/15 3,000 143 2011/4/30 2,000 166 2011/5/31 5,000 178 2011/5/29 3,000 このデータを使用して、2シート目には、各月の合計金額を表示したいのです。 2011年4月 7,000 2011年5月 8,000 こんな感じです。ちなみに、1シート目のB列の日付は一定でないため1日だけを指定することが できません。 そこで、以下のような関数を考えてみました。 =SUMIF(1シート目!$B$1:$B$1000,IF(TEXT(1シート目!B1,"yyyym")="20114",),1シート目!$C$4:$C$1000) 日付を月までに省略し、それで判断させるというものです(言い回しが下手ですみません)。 ちなみになぜ1000行目まで指定しているかというと、今後もデータは増えていくためです。 現在ここまで式を作り上げたものの、「0」が返ってきます・・・ どこが間違っているのか、もしくはもっといい式があるようでしたら 教えていただけたら幸いです。 よろしくおねがいいたします。

専門家に質問してみよう