[[20230924110231]] 『日付範囲指定フィルタマクロ』(nt) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『日付範囲指定フィルタマクロ』(nt)

B1に日付(9/20)J列に2023/9/20 21:36:29 など日時+時刻が入っています
書式設定は”m/d h:mm;@”
B1の日付の午前6時から翌日の午前5時59分まででj列が該当する行だけを表示(フィルタ)させたいのですが
以下のマクロだと何も抽出されません。どこを直したらいいでしょうか
A列からL列までデータ入力されています

Sub S指定日売り上げ集計()

    Dim ws As Worksheet
    Dim targetDate As Date
    Dim startDate As Date, endDate As Date
    Dim lastRow As Long

    ' アクティブシートを参照
    Set ws = ThisWorkbook.Worksheets("レジ履歴")

    ' B1の日付を取得
    targetDate = ws.Range("B1").Value

    ' 開始日時と終了日時を設定
    startDate = targetDate + TimeValue("6:00:00 AM")
    endDate = targetDate + 1 + TimeValue("5:59:59 AM")

    ' 最後の行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' フィルタをクリア (既にフィルタがある場合)
    If ws.AutoFilterMode Then ws.AutoFilterMode = False

    ' J列の日時を基にフィルタを適用
    ws.Range("A10:M" & lastRow).AutoFilter Field:=10, _
        Criteria1:=">=" & CLng(startDate), Operator:=xlAnd, Criteria2:="<" & CLng(endDate)
End Sub

< 使用 Excel:Excel2019、使用 OS:Windows11 >


 折角、時刻の情報を付加したのに、CLng()でそれは無くなりますが、大丈夫ですか?

 >Criteria1:=">=" & CLng(startDate), Operator:=xlAnd, Criteria2:="<" & CLng(endDate)
            ↑                        ↑

(半平太) 2023/09/24(日) 12:52:59


既にコメントありますので蛇足ですが、
時刻の情報はシリアル値では小数点以下の値なので、
CLngでLong型(長整数型)にしてしまうと時刻の情報が無くなり、
想定通りにフィルターされないと思います。
こちらで試したところ、CLngを無しにしたら想定通りにフィルターされましたよ。
(焼き茄子) 2023/09/24(日) 13:00:50

具体的にどんなコードになるでしょうか?以下だとうまくいかないみたいなんですが、、

    ws.Range("A10:M" & lastRow).AutoFilter Field:=10, _
        Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate
End Sub
(nt) 2023/09/24(日) 23:21:43

 これでどうなりますか
  Criteria1:=">=" & CDbl(startDate), Operator:=xlAnd, Criteria2:="<" & CDbl(endDate)

(マナ) 2023/09/25(月) 00:27:33


   If ws.AutoFilterMode Then ws.AutoFilterMode = False
    ' J列の日時を基にフィルタを適用
    ws.Range("A10:M" & lastRow).AutoFilter Field:=10, _
        Criteria1:=">=" & CDbl(startDate), Operator:=xlAnd, Criteria2:="<" & CDbl(endDate)
End Sub

これで何も抽出されないです。B1の書式設定が日付なのがだめですか
(nt) 2023/09/25(月) 10:05:35


 >    ws.Range("A10:M" & lastRow).AutoFilter Field:=10, _
 >        Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate

 これでうまく絞り込めましたけど?
(higejee) 2023/09/25(月) 10:37:45


 これでどうなりますか

 抽出されるはずのJ列セルを選んで
 イミディエイトウインドウに
 ?ActiveCell.Value2

(マナ) 2023/09/25(月) 18:06:43


 翌日の午前5時59分も含めるなら、
 endDate = targetDate + 1 + TimeValue("6:00:00 AM") した上で、

 ws.Range("A10:M" & lastRow).AutoFilter Field:=10, _
        Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate

 で、いけるはず。

(まる2021) 2023/09/25(月) 20:26:02


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.