
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

No.1ベストアンサー
- 回答日時:
少し勘違い?
Criteria1:=">=dt1", Criteria2:="<=dt2",
Criteria1:=">=" & dt1, Criteria2:="<=" & dt2,
かな
No.2
- 回答日時:
こんばんは
直接の原因はNo1様のご回答の通りと思います。
ついでながら、いらぬおせっかいかもしれませんが・・・
月末をDateSerial(年, 月, 0)で取得するのは良いのですが、これだと例えば「2023/3/31 0:0:0」のように時刻が0時の値が返されます。
一方で、ご提示のサンプルでは、データが時刻付きの日付のようですので、「2023/3/31 13:0:0」のデータは、上記の上限値より大きいので、フィルターの対象からは除かれることになります。
多分、これは意図するところではないのではないかと推測します。
月末日もその月に含めたければ、上限を翌月初日0時としておいて、「<=」ではなく「<」で抽出するようにすれば宜しいのではないかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
メモ帳(テキストデータ)をExc...
-
EXCELVBAでSQLserverからデータ...
-
【エクセル】測定時間がバラバ...
-
<VB>String→Object
-
[C言語] コメント文字列を無視...
-
モジュラス103の算出方法について
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
多量のSUMIF式を軽くしたい
-
カンマからスラッシュに
-
ActiveReportについて
-
データ取得時のエラーに関して
-
Accessで該当データにフラグを...
-
MSCommを用いたRS-232-Cデータ転送
-
特定のデータの抽出方法を教え...
-
ACCESS VBA インデックスが有効...
-
CString型の文字列連結について
-
アクセス2000で画像データ...
-
VBAを使ってOutlookメール本文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
特定のデータの抽出方法を教え...
-
二分探索の平均探索回数
-
EXCELVBAでSQLserverからデータ...
-
Accessで該当データにフラグを...
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
アクセス2000で画像データ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
VBにおいてフォーム間の変数の...
-
<VB>String→Object
おすすめ情報