プロが教えるわが家の防犯対策術!

現在業務で、フォルダ内のすべてのExcelブックに対し、
先月分の数字の集計をするためのマクロを使用しています(下記VBA参照)
ところが、2月分を取得したあたりから、1日ずれて取得されるようになってしまいました。
例)3/1~3/31を取得したいのに、2/28~3/30まで取得、集計されてしまう

2月が28日までだからとしか考えられないのですが、
ほかに原因と、対処法が思いつかず・・何が考えられるかもしお分かりの方いらっしゃいましたら、お願いいたします。

以下は使用しているVBAです。
Sub 先月分集計()
Dim OE, wb
Dim dRange As Range, r As Range
Dim myFolder As String, Filename As String
Dim d1 As String, d2 As String

With Application.FileDialog(msoFileDialogFolderPicker)
If Not .Show Then Exit Sub
myFolder = .SelectedItems(1) & "\"
End With

Set dRange = ActiveSheet.Range("B1:B3")
Set OE = CreateObject("Excel.Application")
d1 = ">" & CStr(DateSerial(Year(Date), Month(Date) - 1, 0))
d2 = "<" & CStr(DateSerial(Year(Date), Month(Date), 1))

Filename = Dir(myFolder & "*.xlsx")
Do While Filename <> ""
Set wb = OE.Workbooks.Open(myFolder & Filename, 3, True)
Set r = wb.ActiveSheet.Columns(1)
dRange(1).Value = r.Worksheet.Name
dRange(2).Value = OE.WorksheetFunction.SumIfs(r.Offset(, 1), r, d1, r, d2)
dRange(3).Value = OE.WorksheetFunction.SumIfs(r.Offset(, 2), r, d1, r, d2)
wb.Close False

Set dRange = dRange.Offset(, 1)
Filename = Dir()
Loop

OE.Quit
MsgBox "終了しました"
End Sub

A 回答 (2件)

d1 = ">" & CStr(DateSerial(Year(Date), Month(Date) - 1, 0))



d1 = ">=" & CStr(DateSerial(Year(Date), Month(Date) - 1, 1))
に変えてみてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
いただいた回答内容で試したところ、
綺麗に前月分集計できました!
ありがとうございました。

お礼日時:2022/05/13 11:20

集計元のシートのA列に「売上日」みたいな項目があると思いますが、この日付って、時刻も含まれていませんか?

    • good
    • 0

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