• 締切済み

VBAで期間でデータを抽出するには?(Excel2003)

いつも助けていただきありがとうございます。 Excel2003でデータベースを作成しました。 「日付」のところには、2008/11/18という形式で入力していますが、 VBAでフォームから「○○○○年○月~○○○○年○月までを抽出」として、 該当レコードを抽出するにはどうしたらよいでしょうか? いろいろ試してはみたのですが、よい方法・アイディアができませんでした。 VBA初心者です。よろしくお願いします。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.1です。 Selection.AutoFilter Field:=2, Criteria1:=">=" & Range("v5").Value, Operator:=xlAnd _ , Criteria2:="<=" & Range("y5").Value とか?

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

全行IF文で、○○○○年○月1日より大きく、○○○○年○月末日より小さい というのをANDで並べたらしまい。 日付シリアル値というのは、正の整数なんだから、3より大きく5より小さいという選別をするのと同じなんだ。初心者はここから始める。

umineko315
質問者

お礼

回答ありがとうございます。 期間抽出用のフォームから、日付シリアル値で期間を抽出する方法を考えてみたいと思います。 もし良いアイディアがあったら教えてください。 今の時点で考えていたのは、 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 v5(開始月日用のセル)=T4&"/"&U4&"/"&V4(西暦・月・日がいったん入るセル) t5(終了月日用のセル)=W4&"/"&X4&"/"&Y4 としました。(表示では2008/11/19となりました。) そして、 Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=range("v5")", Operator:=xlAnd _ , Criteria2:="<=range("y5")" としたところ、エラーになってしまいました。

回答No.2

こんなんでどうですか? Sub抽出() Selection.AutoFilter Field:=“抽出する列番号”, Criteria1:=">=抽出する月日1", Operator:=xlAnd _ , Criteria2:="<= 抽出する月日2" End Sub

umineko315
質問者

補足

早速回答ありがとうございます。 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 v5(開始月日用のセル)=T4&"/"&U4&"/"&V4(西暦・月・日がいったん入るセル) t5(終了月日用のセル)=W4&"/"&X4&"/"&Y4 としました。(表示では2008/11/19となりました。) そして、 Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=range("v5")", Operator:=xlAnd _ , Criteria2:="<=range("y5")" としたところ、エラーになりました。 どのように修正すればよいでしょうか?

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

”このようなシート構成になっている”とか、試したけど無理だったコードとかを 提示してみては如何でしょう。

umineko315
質問者

お礼

回答ありがとうございます。 確かにそうですね。どのように書いていいかわからず、そのまま質問してしまいました。 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 v5(開始月日用のセル)=T4&"/"&U4&"/"&V4(西暦・月・日がいったん入るセル) t5(終了月日用のセル)=W4&"/"&X4&"/"&Y4 としました。(表示では2008/11/19となりました。) そして、 Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=range("v5")", Operator:=xlAnd _ , Criteria2:="<=range("y5")" としたところ、エラーになりました。 どのように修正すればよいでしょうか?

関連するQ&A

  • VBA フォームを使って、期間でレコードを抽出するには?(Excel2003)

    いつも助けていただきありがとうございます。 再質問です。(内容をまとめました。) Excel2003でデータベースを作成しました。 「日付」(B列)のところには、2008/11/18という形式で入力しています。 VBAで抽出用フォームから「○○○○年○月○日~○○○○年○月○日までを抽出」として、 該当レコードを抽出するにはどうしたらよいでしょうか? いろいろ試してはみたのですが、よい方法・アイディアができませんでした。 VBA初心者です。よろしくお願いします。 ちなみに試してみたのは、 期間抽出用フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 v5(開始月日用のセル)=T4&"/"&U4&"/"&V4(西暦・月・日がいったん入るセル) t5(終了月日用のセル)=W4&"/"&X4&"/"&Y4 としました。(表示では2008/11/19となりました。) そして、 Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=range("v5")", Operator:=xlAnd _ , Criteria2:="<=range("y5")" としたところ、エラーになりました。 どのように修正すればよいでしょうか?

  • データベースから特定の要件を満たすデータ抽出

    エクセルに入力したデータベースからデータの抽出をしたいと考えています。 データ抽出はフォームにチェックボタン(およそ60種類)で、条件をチェックします。 データベースからチェックに該当しないもののみを抽出して、他のシートへ転記したいのですが、 このようなファイルの作成方法を教えて頂けないでしょうか?

  • EXCEL2000のVBAで*.dbf形式データからデータを抽出するには(ODBCとの連携について)

    こんにちは 「データベースなら任せて!!」 という方におたずねします。 最近、EXCEL2000のVBA講習をやることになりました。 VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては うまく説明できません。 いろいろ調べてますが、よくわかりません。 やりたいことは、 複数のデータベースファイル(*.dbf)があります、 それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように 制御したいのですが、 まず、 疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。 疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。 おたすけください。

  • アクセスで日付(期間)抽出

    アクセスでわからないことがあるので教えて下さい。 アクセス2003を使用しています。 フィールド名  日付    名前  代金        2001/10/14  田中  4000        2001/04/05  鈴木  1000 とデータが100件ほど入っています。 この日付でたとえば、4月5日~9月15日までの データだけを抽出したい場合どうすればいいでしょうか? 抽出はできれば、入力フォームを作成して 入力フォームから日付を入れれば、抽出する形をとりたいんです。 お願いいたします。

  • クエリを使わずに日付の抽出をしたい

    accessを始めて数週間の初心者です。VBAについては見よう見まねで参考書の丸写し程度の段階です。 日付ごとの売上表になっている一覧表フォームに、テキストボックス(日付を入力する)を作成して、日付抽出のコマンドボタンをクリックすると指定した日付のレコードのみを表示させたいのですが、その場合のイベントプロシージャはどう記述すればいいでしょうか? よろしくお願いします。

  • 日付データの抽出方法を教えてください

    ACCESS97のVBAで開発しています。ACCESSデータベースから該当する日付データを抽出したいのですが、YYYYのみの条件でYYYY/1/1からYYYY/12/31までのデータを抽出したいのです。SQLでできるのでしょうか?もしできるのならそのやり方を教えてください。

  • フォームからクエリの抽出期間を指定するにあたって

    フォームのテキストボックス(開始日付,終了日付)に入力された期間内の レコードをクエリで抽出するために、以下のような抽出条件を設定しています。 Between [Forms]![フォーム1]![from date] And [Forms]![フォーム1]![終了日付] ここまでは問題なく出来ています。 ですが、例えばテキストボックスに何も入力していないときに、 全ての期間から全件表示させるような方法はありませんでしょうか? IIf(IsNull([Forms]![フォーム1]![開始日付]),True,~ というような形で、IIfとIsNullの組み合わせも考えたのですが、 日付は直接フィールドでは無く抽出条件のため、 Trueより後が設定できずに悩んでおります。 出来ればVBAは使いたくないのですが、 何か良い方法はありませんでしょうか?

  • エクセルVBA テキストボックス 日付表示

    エクセルVBAにて入力用フォームを開いたときに フォーム内にあるテキストボックスに今日の日付が 自動で表示されるようにしたいのですが どの様に書き込めば宜しいでしょうか? また、2008.09.05 平成20年9月5日などの 日付形式の変更はどの様に書き込むのでしょうか?

  • 期間内のデータ抽出

    テーブル名:HOGE ID  DATE1     DATE2     FLG ------------------------------------------------------------ 001  2012-07-01  2012-07-15  0 002  2012-07-10  2012-07-20  0 003  2012-07-01  2012-08-01  0 004  2012-07-05  2012-07-19  1 005  2012-07-20  2012-07-31  0 006  2012-07-07  2012-07-15  0 で、本日の日付(2012年7月9日)がDATE1~DATE2に入る、かつFLGが0のレコードだけ抽出したいです。 上記の場合、 ID 001 003 006 この様に抽出したいのですが、宜しくお願い致します。

  • データ抽出

    VBA初心者です。 エクセルで2枚のシートを練習用で作成しました。 画像上段がシート1で元データです。 下段が転記先の表で、シート2です。 シート2は、今はデータが参考に貼りつけてありますが 普段はマクロで作業後は消去して、空白にしています。 今したい処理が 元データをINPUTBOX関数を使って抽出し、 NO,購入日付、分類、感想、備考のデータを下段画像シート2のように 転記したいのです。 抽出条件のキーになるのは、主に「購入日付」と「分類」です。 どこかのセルに、日付を範囲指定で入力すれば、条件に当てはまる データをシート2に表示させたいです。 四半期ごとのデータを検索したいためです。 INPUTBOX関数でなくても、どこかの特定のセルに範囲指定する日付を入力 して、抽出してもかまわないです。 あと、分類は割と「飲料水」を抽出して、印刷する頻度が多いのですが 今後の参考に、全部の分類を抽出できるスタイルが望ましいです。 現在は、一行一行日付と分類を目視で確認しながら シート2にコピペ作業しているので 時間がかかります。 エクセルの機能でフィルタ等をしてみたのですが、 関数やVBAで素早くしたいのですが、なかなかコードが思いつきません。 お願いします。

専門家に質問してみよう