アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すため下記マクロを作りました。抽出条件をSheet1 のA2セルにあるプルダウンの「 2023/1/1」を活用しようと記述しましたがうまくいきません。実行するとSheet3には項目のNoと日付だけが転記されます。どのように変更したら良いか教えてください。

Sub データ抽出()
Dim Sht1 As Worksheet
Dim Sht2 As Worksheet
Dim dt1 As String
Dim dt2 As String
Set Sht1 = Sheets("Sheet2")
Set Sht2 = Sheets("Sheet1")
dt1 = Sht2.Cells(2, 1).Value
dt2 = DateSerial(Year(dt1), Month(dt1) + 1, 0)
'フィルターでデータ抽出
Sht1.Range("A1").CurrentRegion.AutoFilter _
Field:=2, _
Criteria1:=">=dt1", Criteria2:="<=dt2", Operator:=xlAnd
Sht1 .Range("A1").CurrentRegion.Copy Sheets("Sheet3").Range("A1")
End Sub

「Sheet2の日付をキーにオートフィルタ」の質問画像

A 回答 (2件)

少し勘違い?


Criteria1:=">=dt1", Criteria2:="<=dt2",

Criteria1:=">=" & dt1, Criteria2:="<=" & dt2,

かな
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。ご指摘の箇所を修正し出来ました。

お礼日時:2023/03/07 14:53

こんばんは



直接の原因はNo1様のご回答の通りと思います。


ついでながら、いらぬおせっかいかもしれませんが・・・
月末をDateSerial(年, 月, 0)で取得するのは良いのですが、これだと例えば「2023/3/31 0:0:0」のように時刻が0時の値が返されます。

一方で、ご提示のサンプルでは、データが時刻付きの日付のようですので、「2023/3/31 13:0:0」のデータは、上記の上限値より大きいので、フィルターの対象からは除かれることになります。
多分、これは意図するところではないのではないかと推測します。

月末日もその月に含めたければ、上限を翌月初日0時としておいて、「<=」ではなく「<」で抽出するようにすれば宜しいのではないかと思います。
    • good
    • 1
この回答へのお礼

やってみます

ありがとうございます。

お礼日時:2023/03/07 14:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!