好きなおでんの具材ドラフト会議しましょう

Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1の日付と一致するセルへ入力したいのですが下記マクロで❶❷の状況で上手くいきません。
❶データの個数は「11」なのに「1」となる
❷Sheet1のB1セルへ「2023/3/1」にすると「2023/2/1」に入力される
何処を直したら良いか教えてください。
Sub Test1()
Dim Count As Long
Worksheets("Sheet2").Range("B4").AutoFilter 1, "<>"
'抽出件数カウント
Count = WorksheetFunction.Subtotal(3, Range("B4").CurrentRegion.Columns(1))
'処理月へ転記
Dim c As Long
For c = 1 To 12 '4月~3月の範囲
If Cells(4, c).Value = Range("B1").Value Then Exit For
Next c '該当月の指定
Worksheets("Sheet1").Cells(5, c) = Count - 1
Application.CutCopyMode = False
End Sub

「Sheet2からオートフィルターで売上日」の質問画像

A 回答 (2件)

以下のようにしてください。


Sub Test1()
Dim Count As Long
With Worksheets("Sheet2")
.Range("B4").AutoFilter 1, "<>"
'抽出件数カウント
Count = WorksheetFunction.Subtotal(3, .Range("B4").CurrentRegion.Columns(1))
End With
'処理月へ転記
Dim c As Long
With Worksheets("Sheet1")
For c = 3 To 14 '4月~3月の範囲
If .Cells(4, c).Value = .Range("B1").Value Then
Worksheets("Sheet1").Cells(5, c) = Count - 1
Exit For
End If
Next c '該当月の指定
End With
Application.CutCopyMode = False
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
・処理をwithでくくる
・forの初期値と終了時の値
この2点勉強になりました。

お礼日時:2023/01/12 22:47

初級者ジジィですけど。



>'抽出件数カウント

にて指定しているセル範囲はActiveSheetですが、それが正解なのかなぁ~と少し気になってしまいました。
Sheetを明確に指定したらどうなるのでしょう?
    • good
    • 1

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


おすすめ情報