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作者: samwang 時間: 2022-6-17 12:03
修正#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作者: gaishutsusuru 時間: 2022-6-17 22:18
Sub 合計匯總()
Dim d0, d1, d2, S
d0 = CDate(Split([彙總!b1], "~")(0))
d1 = Format(Split([彙總!b1], "~")(0), "YYYYMM")
d2 = Format(Split([彙總!b1], "~")(1), "YYYYMM")
On Error Resume Next
For i = 0 To (d2 - d1) Mod 88
S = S + Val(Sheets(Format(d0 + i * 31, "yyyy年m月")).[b65536].End(3))
Next i
[彙總!B2] = S
End Sub作者: gaishutsusuru 時間: 2022-6-18 18:34
Sub 合計匯總()
Dim d0, d1, d2, S
d0 = CDate(Split([彙總!b1], "~")(0))
d1 = Format(Split([彙總!b1], "~")(0), "yyyymm")
d2 = Format(Split([彙總!b1], "~")(1), "yyyymm")
On Error Resume Next
For i = 0 To (d2 - d1) Mod 88
S = S + Val(Sheets(Format(d0 + i * 31, "yyyy年m月")).[b65536].End(3))
Next i
[彙總!B2] = S
End Sub