- 締切済み
VBAで期間でデータを抽出するには?(Excel2003)
いつも助けていただきありがとうございます。 Excel2003でデータベースを作成しました。 「日付」のところには、2008/11/18という形式で入力していますが、 VBAでフォームから「○○○○年○月~○○○○年○月までを抽出」として、 該当レコードを抽出するにはどうしたらよいでしょうか? いろいろ試してはみたのですが、よい方法・アイディアができませんでした。 VBA初心者です。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
ANo.1です。 Selection.AutoFilter Field:=2, Criteria1:=">=" & Range("v5").Value, Operator:=xlAnd _ , Criteria2:="<=" & Range("y5").Value とか?
- imogasi
- ベストアンサー率27% (4737/17069)
全行IF文で、○○○○年○月1日より大きく、○○○○年○月末日より小さい というのをANDで並べたらしまい。 日付シリアル値というのは、正の整数なんだから、3より大きく5より小さいという選別をするのと同じなんだ。初心者はここから始める。
- nakai_dayo
- ベストアンサー率28% (6/21)
こんなんでどうですか? Sub抽出() Selection.AutoFilter Field:=“抽出する列番号”, Criteria1:=">=抽出する月日1", Operator:=xlAnd _ , Criteria2:="<= 抽出する月日2" End Sub
補足
早速回答ありがとうございます。 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 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)
”このようなシート構成になっている”とか、試したけど無理だったコードとかを 提示してみては如何でしょう。
お礼
回答ありがとうございます。 確かにそうですね。どのように書いていいかわからず、そのまま質問してしまいました。 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 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")" としたところ、エラーになりました。 どのように修正すればよいでしょうか?
お礼
回答ありがとうございます。 期間抽出用のフォームから、日付シリアル値で期間を抽出する方法を考えてみたいと思います。 もし良いアイディアがあったら教えてください。 今の時点で考えていたのは、 期間抽出フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 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")" としたところ、エラーになってしまいました。