返回列表 上一主題 發帖

[發問] 不同工作表,依日期區間條件加總

本帖最後由 quickfixer 於 2022-6-17 00:15 編輯

回復 5# gaishutsusuru

試試,把#4的total換成這個

    Sub total()
    Dim d1 As Date, d2 As Date, t, sn As String
    d1 = DateValue(Split(Replace(Replace(Sheets("彙總").Range("b1"), "年", "/"), "月", ""), "~")(0))
    d2 = DateValue(Split(Replace(Replace(Sheets("彙總").Range("b1"), "年", "/"), "月", ""), "~")(1))
    For i = 0 To DateDiff("m", d1, d2)
        sn = Format(DateAdd("m", i, d1), "yyyy年m月")
        If checksheet(sn) = True Then
            t = t + Sheets(sn).Cells(Sheets(sn).Cells(Sheets(sn).Rows.Count, 1).End(xlUp).Row, 2)
        End If
    Next i
    Sheets("彙總").Range("B2") = t
End Sub


Function checksheet(sheet_name) As Boolean
    Dim check As Range
    On Error Resume Next
    Set check = Sheets(sheet_name).Range("a1")
    If Err.Number <> 0 Then checksheet = False Else checksheet = True
    On Error GoTo 0
End Function

TOP

回復 6# quickfixer

修正#6,忘了沒有檢查的需要,去掉了function,縮短程式碼
    Sub total()
    Dim d1 As Date, d2 As Date, t, sn As String
    d1 = DateValue(Split(Replace(Replace(Sheets("彙總").Range("b1"), "年", "/"), "月", ""), "~")(0))
    d2 = DateValue(Split(Replace(Replace(Sheets("彙總").Range("b1"), "年", "/"), "月", ""), "~")(1))
    On Error Resume Next
    For i = 0 To DateDiff("m", d1, d2)
        sn = Format(DateAdd("m", i, d1), "yyyy年m月")
        t = t + Sheets(sn).Cells(Sheets(sn).Cells(Sheets(sn).Rows.Count, 1).End(xlUp).Row, 2)
    Next i
    Sheets("彙總").Range("B2") = t
End Sub

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題