• ベストアンサー

ACCESS で、古い日付順に抽出したい

こんにちは。質問ばかりですみません。 EXCEL から ACCESS に移行するため、四苦八苦している者です。 たとえば下のようなCSV データがあったとします。 品番,納入日 A001,2006/1/24 A001,2006/2/10 A001,2006/2/13 A001,2006/2/14 A001,2006/2/15 B002,2006/1/26 B002,2006/2/3 B002,2006/2/14 B002,2006/2/24 B002,2006/2/27 C003,2006/1/27 C003,2006/2/7 C003,2006/2/9 C003,2006/2/14 C003,2006/2/21 品番に対して、日付は納入日です。 このデータに対して、以下のように一番近い日付だけ抽出し、納入日一覧クエリーを作りたいです。 品番,納入日 A001,2006/1/24 B002,2006/1/26 C003,2006/1/27 EXCEL だと日付順に並び替えてから、別シートからVLOOKUP で上から抽出してくれますよね。 アイデア下さい。 また、どんな言葉で検索していいかわからなくて、既出だったらごめんなさい。 ACCESS 97 で、WINDOWS 2000です。 よろしくお願いします。

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

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

データの読み込みはできたのでしょうか? できているのであれば、クエリを作成し集計の品番をグループ化、納入日を最大とすればできます。 納入日のデータ型が日付時刻型になっていないと変なことがおきるかも知れませんのでご注意を

megumaru
質問者

お礼

わかりにくくて、すみませんでした。 いちばん近い将来の日付を出したかったので、最小とすることで結果を得られました。 ありがとうございました。

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

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>このデータに対して、以下のように一番近い日付だけ抽出し この意味がちょっと不明ですが。日付の一番前のレコードという事でしょうか?一番最後のレコードでしょうか? #1の方の集計クエリで品番でグループ化し納入日の最大とすると後者になります。 よって 品番,納入日 A001,2006/1/24 B002,2006/1/26 C003,2006/1/27 ではなく 品番,納入日 A001,2006/2/15 B002,2006/2/27 C003,2006/2/21 になりますが 納入日を最小にすると 品番,納入日 A001,2006/1/24 B002,2006/1/26 C003,2006/1/27 になります。 それとも納入日が予定のようなまだ到来していない日付なので今日に一番近い日付という事なのでしょうか? 今日以降の日付で一番近いという意味であれば抽出条件に>Date()とすれば今日以降の一番近い到来していない日付のレコードを最小で抽出出来ます。 品番,納入日 A001,2006/1/24 B002,2006/1/26 C003,2006/1/27 今日は2006/1/23なのでこのようになります。

megumaru
質問者

お礼

混乱させてしまって、すみません。 最小とすることで、欲しい結果を得ました。 私自身はまだ混乱してるんですが(涙)、また別の質問を新たに上げます。 ありがとうございました。

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

関連するQ&A

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

    日付によるデータ抽出について 環境: ACCESS2000 状況: メインフォーム(テキスト期間A、テキスト期間B、テキスト品番、検索ボタン)    サブフォーム(データシート)    管理テーブル( 品番  /  レンタル日  /  返却日)    ※管理テーブルは他テーブルのコピー用 やりたい事: 簡潔にいうと期間と品番による抽出。       但し、テキスト期間Bが空白の場合、テキスト期間A以降のデータ抽出。          テキスト期間Aが空白の場合、テキスト期間B以前のデータ抽出。       さらに、テキスト品番が空白の場合、期間のみでの抽出。       逆にテキスト期間A・Bが空白の場合、テキスト品番で抽出。(品番の履歴抽出) 1度コードを作ってはみたものの、エラーばかりでひどかったので 0から教えて頂けると有難いです。 お手数お掛けしますが、何卒宜しくお願い致します。

  • エクセル表から項目と交点データを抽出する

    表1 品番    出荷日 製品A   10/1       台数        5 表2 品番 10/1 10/2 10/3 10/4 製品A 5   5   5   0 製品B 0   0   0   5 製品C 0   0   2   0 製品D 0   1   0   3 表2のように製品名と納入日、その交点に納入数が表記されています。 製品Aを10/1に納入する 5 が表記されたセルをクリックすると表1のようにデータが抽出する事が出来るでしょうか? 現状は製品名は入力規制でプルダウンメニューからクリック選択、日付はカレンダーコントロールの日付をクリック選択、台数はINDEX,MATCH関数でデータ抽出して表1を作成しています。

  • エクセルで日付順で抽出

    エクセルで関数を使用して、別シートから日付順で抽出するのは可能でしょうか? 1.シート1に、会員NO(A列)名前(B列)フリガナ(C列)~…購入チケットの種類(H列)チケットの残数(J列)チケット購入日(K列)チケット期限(L列)~ 2.シート2に、セルB2に会員NOを入力した時に、チケットの購入履歴【購入チケットの種類(A列)チケットの残数(B列)チケット購入日(C列)チケット期限(D列)】を日付順に抽出されるようにしたいです。 宜しくお願い致します。

  • DB抽出の日付が参照できない

    DB抽出データをエクセルに出力して仕事用に参照しています。 エクセルA列1に任意の日付を入力して、仕入れの集計をしてるのですが、参照してくれません。(一致しない?) 抽出されたエクセル日付列のデータ書式定義をみると、 「ユーザー定義dd-mmm-yyyy」となっており、 データは、 (例) 日付列 2008/6/10 6:53:41 と時間まで入っていました。 DBに書き込まれた時間だと思いますが。。。? A1に任意入力「6/10」して、日付列と一致した場合に、 仕入れ数を合計したいのですが、 条件を B1=A1 B1=DAY(A1) B1=MONTH(A1)・・・ などいろいろ試みたのですが、抽出してくれませんTT 日単位でいいのですが、時間まで一致しないとだめなのでしょうか? スキル足りません・・・お力を

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

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

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

    日付によるデータ抽出について 環境: 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を使用しています。 フィールド名  日付    名前  代金        2001/10/14  田中  4000        2001/04/05  鈴木  1000 とデータが100件ほど入っています。 この日付でたとえば、4月5日~9月15日までの データだけを抽出したい場合どうすればいいでしょうか? 抽出はできれば、入力フォームを作成して 入力フォームから日付を入れれば、抽出する形をとりたいんです。 お願いいたします。

  • 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  よろしくお願いします。 

  • 抽出したデータの重量を足したい

    VBA初心者です。 2つのデータ表から品番データを抽出し、データの重量も足したいです。 データ表(A)  品番 B1 10 B2 20 B3 30  データ表(B)  品番          重量 B8 10       C8 1000  B9 12       C9 2300 B10 10      C10 2000 (B)から品番10を抽出し、データにすることはできましたが、同時に品番10の重量も足したいのです。 よろしくおねがいします!

  • 連続していない日付データからの抽出

    エクセルで、   A   B 1 日付 売上   2 11/21  900 3 11/22 2000 4 11/26 1800 5 11/27 1300   D    E 1 日付  前日比 2 11/21 **% 3 11/22 **% 4 11/26 **% 5 11/27 **% とあります。 そこで、   G   H   I 1 日付 売上 前日比 2 任意 (抽出) (抽出) 3 と、Gに日付を入力したらH、Iにデータが抽出されるように関数を作りたいと思います。 Hには =INDEX(A2:B5,MATCH(G1,A2:A5,0),2) Iには =INDEX(D2:E5,MATCH(G1,D2:D5,0),2) と入力して抽出をしましたが、 例えばG列に元データには無い、「11/23」が入力されたときは、11/23よりも先で1番にくる11/26のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

専門家に質問してみよう