[[20230306105500]] 『オートフィルターで別シートにある月を指定したい』(りお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートフィルターで別シートにある月を指定したい』(りお)

Sheet(2)のオートフィルターで月で絞ってSheet(3)へ書き出したいのですが
変数dt1へ月の開始日をdt2へ月末日を入れるため途中まで下記マクロを書きましたが先に進めません。
条件として開始日は、Sheet(1)のセルA2には「2023/1/1」が入っています。
dt1 = >=Sht2.Cells(2, 1).Value
dt2 = <=DateSerial(Year(dt1), Month(dt1) + 1, 0)
などと指定しましたが抽出は0件になります。

Sub 月データ抽出3()

    Dim Sht1 As Worksheet,Sht2 As Worksheet
    Dim dt1 As String,dt2 As String
    Set Sht1 = Sheets(2)
    Set Sht2 = Sheets(1)
    dt1 = ">=2023/1/1"
    dt2 = "<=2023/1/31"
    Sht1.Range("A1").AutoFilter 2, dt1, xlAnd, dt2       
    Sht1.Range("A1").CurrentRegion.Copy Sheets(3).Range("A1") 
End Sub
どのように変更したら良いか教えてください。

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


 Sht1.Range("A1").AutoFilter 2, dt1, xlAnd, dt2
    ↓
 Sht1.Range("A1").AutoFilter 1, dt1, xlAnd, dt2
 ではないですか?

(abc) 2023/03/06(月) 11:28:05


 実際にdt1、dt2への代入時のコードは?
(ねむねむ) 2023/03/06(月) 11:32:05

お考えいただきありがとうございます。
abcさん 抽出対象シートのSheet(2)の日付列は、2列目になります。
ねむねむさん dt1、dt2への代入時のコードは、
dt1 = >=Sht2.Cells(2, 1).Value
dt2 = <=DateSerial(Year(dt1), Month(dt1) + 1, 0)
としてみましたが、抽出件数は0件でした。
(りお) 2023/03/06(月) 11:45:16

 そもそもそれだと入力時に構文エラーにならないか?
(ねむねむ) 2023/03/06(月) 11:55:49

 構文エラーになると思います。

 提示された最初のマクロ、Sub 月データ抽出3() で
 ちゃんと動作すると思いますよ。

 下記なのであってると思いますが
 Sht1.Range("A1").AutoFilter 2, ">=2023/1/1", xlAnd, "<=2023/1/31"

 もしかして...日付けの前に半角スペースなどが入ってませんか?
 シート1 A2と、シート2の2列目を確認してみてください。

 違ったら、すいません。
(あみな) 2023/03/06(月) 17:16:28

はい Sht1.Range("A1").AutoFilter 2, ">=2023/1/1", xlAnd, "<=2023/1/31" はエラーになりません。
別シートのA2セルに2023/1/1があり、この値をオートフィルターの条件として使いたいのですがどのようにしたら良いかお分かりの方がいらっしゃいましたら教えてください。
(梅生) 2023/03/06(月) 22:15:28

梅生 だれだ?
(おまえは誰だ) 2023/03/06(月) 22:27:33

    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

これでできました。
(りお) 2023/03/07(火) 14:18:53


 >ねむねむさん dt1、dt2への代入時のコードは、
 >dt1 = >=Sht2.Cells(2, 1).Value
 >dt2 = <=DateSerial(Year(dt1), Month(dt1) + 1, 0)
 >としてみましたが、抽出件数は0件でした。

 これ実際は
 dt1 = ">=Sht2.Cells(2, 1).Value"
 dt2 = "<=DateSerial(Year(dt1), Month(dt1) + 1, 0)"
 としてたのかね。

 だったら
 dt1 = ">=" & Sht2.Cells(2, 1).Value
 dt2 = "<=" & DateSerial(Year(dt1), Month(dt1) + 1, 0)
 でも、ってことになるが。
(ねむねむ) 2023/03/07(火) 14:25:10

コメント返信:

[ 一覧(最新更新順) ]


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