Q列
終了時間
2001/11/25 3:00
2001/12/26 11:30
2002/1/24 11:30
2002/2/24 11:30
データベースの中から条件抽出をしたい。
条件は 2001 12/26 8:00以上で 2002 1/26 7:59以下を抽出したい。
今現在は、フィルタのオプション抽出でマクロ記録でやっているのですが。
西暦は条件に入れてなくて日付時間でやっていますので、来年の西暦が来たときに
2001 12/26 8:00以上の抽出ができません。抽出条件のいい方法があったら教えてください。
マクロ操作で出来たらお願いします。
No.1ベストアンサー
- 回答日時:
質問の意味を、『月、日、時刻入力のみで期間指定する』と解釈して下記コードを書いてみました。
年なしで月日を入力したら両方の月日を比べて逆転していたら開始年を『-1年』しています。年をつけて入力すればそれを使用します。自動的に付加される年は現在の年のため、質問の年を全て『-1』してテストすれば確かめられると思います。閏年の1年前の日付とか気になりますが、その時は年を付けて入力すれば大丈夫でしょう。
AutoFilter の Field:=1 の 『1』はQ列が実際のフィルターで左から何番目かをセットします。
意味を捉えていればいいんですが・・・。ご参考に。
Sub Macro1()
Dim startYMD As Date '開始年月日 時刻
Dim endYMD As Date '終了年月日 時刻
On Error GoTo ErrorHandler
startYMD = InputBox("開始年月日 時刻")
endYMD = InputBox("終了年月日 時刻")
If startYMD > endYMD Then
startYMD = DateSerial(Year(endYMD) - 1, Month(startYMD), Day(startYMD))
End If
Selection.AutoFilter Field:=1, Criteria1:=">=" & startYMD, Operator:=xlAnd, Criteria2:="<=" & endYMD
Exit Sub
ErrorHandler:
End Sub
No.2
- 回答日時:
>フィルタのオプション抽出でマクロ記録でやっているのですが
この意味が分からず、補足の
>自動抽出は無理なのでしょうか
で益々わからなくなりました。
今、どのような処理をされているのか、『自動抽出』の意味はどのようなことかを補足してもらえないでしょか。
例えば、日付を今日の日付で自動計算するとか、セルに入力したものを持ってくるとか、処理予定の一覧表があるとか、そういうことです。
望む処理が詳しく分かれば対応できると思いますが・・・
この回答への補足
質問の仕方が悪くててすいません
マクロ記録で下記の処理をさせています。
Selection.AutoFilter
Selection.AutoFilter Field:=17, Criteria1:=">=12/26 8:00", Operator:= _
xlAnd, Criteria2:="<=1/26 7:59"
このやり方だと西暦を入れていないので来年2002年になったときに2001年のデータが
抽出されません。西暦日付時刻まで自動抽出でデータを抽出する方法ということです。
よろしくお願いします。
No.3
- 回答日時:
補足については想像した通りです。
『今はデータがないので、フィルターを通してもデータは抜けない。でも2002年になったら年がないからマズイ』ということだと思いますが、今のフィルターはデータがないので抜けないのではなく、このフィルターに合致するデータはいつも存在しないと思います。結局、フィルターは機能していないと思われます。違っていたら補足してもらえばと思います。
この処理で重要なのは『年』を付加することで、下はパソコンの日付を使っています。月・日しかないデータを処理する場合、12月と1月の年をどうするか問題になることがあります。
下は2001年12月に処理を行えば、2000/12/26 8:00~2001/1/26 7:59 が対象になります。
2002年 1月に処理を行えば、2001/12/26 8:00~2002/1/26 7:59 が対象になります。
処理のタイミングが重要になります。実際の仕事では今は12月だから開始年は何年、1月なら何年と明確に決まることもあります。
この処理の内容で必要なら下記を修正して下さい。
Selection.AutoFilter Field:=17, Criteria1:=">=" & (Year(Now()) - 1) & "/12/26 8:00", _
Operator:=xlAnd, Criteria2:="<=" & Year(Now()) & "/1/26 7:59"
この回答への補足
処理のタイミングが決まっていません。その都度になります。
そこであるセルの場所(b12)に西暦2001と(b13)に西暦2002入っています。
変数を使ったマクロを書いてみました。
Dim seireki As string,seireki_A as string
Sheets("data").Select
Range("b12").Select
seireki = ActiveCell.Value
Sheets("data").Select
Range("b13").Select
seireki_A = ActiveCell.Value
Selection.AutoFilter
Selection.AutoFilter Field:=17, Criteria1:=">=seireki 12/26 8:00", Operator:= _
xlAnd, Criteria2:="<=seirekiA 1/26 7:59"
これでやってみたのですがうまく抽出できません。
記述がおかしいと思いますので悪い所を教えてください。
以上
No.4
- 回答日時:
Sheets("data")にオートフィルタをかけるとして、Q列は17番目なので、西暦年はデータが無い右側に入力すべきでしょう。
AA1、AB1は使っていないとしています。使っていればもっと右にして下さい。AutoFilterの行は修正してみました。文字の連結の仕方とseireki_A(元はseirekiA)を修正しています。
Dim seireki As String, seireki_A As String
seireki = Range("AA1").Value
seireki_A = Range("AB1").Value
Sheets("data").Select
Selection.AutoFilter
Selection.AutoFilter Field:=17, Criteria1:=">=" & seireki & "/12/26 8:00", Operator:= _
xlAnd, Criteria2:="<=" & seireki_A & "/1/26 7:59"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) マクロ削除再抽出する方法を教えて下さい。 6 2022/11/26 11:03
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) エクセルの関数を教えてください。② 9 2023/05/25 15:28
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
今日の日付のデータをすばやく...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
エクセルのオートフィルタで最...
-
access マクロでのフィルタの...
-
Excel時間データの抽出
-
オートフィルタ抽出データに連...
-
エクセルフィルターオプション...
-
エクセルで特定の列にある日付...
-
【大至急】エクセルで、検索語...
-
エクセルにて、フィルタをかけ...
-
VBAでオートフィルターの再検索
-
オートフィルタで3つ以上の条...
-
オートフィルタを見出し行選択...
-
エクセルで検索窓のようなもの...
-
オートフィルターで一つずつ抽...
-
オートフィルタで抽出したデー...
-
ExcelVBAでフィルタを複数条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
エクセル関数で、数字の入った...
-
エクセルで、条件に一致した行...
-
オートフィルタで3つ以上の条...
-
access マクロでのフィルタの...
-
Excel共有ブックのオートフィル...
-
なぜShowAllDataだとうまく行か...
-
エクセル・条件付で行を削除す...
-
オートフィルタで選択したデー...
-
【EXCEL】条件に一致した最新デ...
-
今日の日付のデータをすばやく...
-
エクセル、オートフィルタで最...
-
Excelオートフィルターで絞り込...
-
可視セルを対象としたcountifが...
-
【Excel/関数/条件付き書式】月...
-
データの抽出を教えてください
おすすめ情報