返回列表 上一主題 發帖

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

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

大家好,
想請問如何將不同工作表,依日期區間條件加總,相關說明如下:

1.png
2022-6-14 22:18

這是2022年1月的工作表資料,共3筆,金額合計是60

(註:2022年2月~5月的資料都獨立放在各月的工作表資料中。但每個月的筆數不一定都是3筆,例如4、5月的筆數是4筆。)
(註:本例已有簡化,因此僅列示5個月。)

2.png
2022-6-14 22:20

此為「彙總」的工作表。在「計算期間」手動填入期間,
例:「2022年1月~2022年3月」則,公式會自動把2022年1~3月的合計加總起來得到1560
例:「2022年1月~2022年5月」則,公式會自動把2022年1~3月的合計加總起來得到6360
其他依此類推;而若「2022年1月~2022年1月」,則是僅顯示2022年1月的資料

最後附上附檔: 新增 Microsoft Excel 工作表.zip (10.86 KB)

想請教大家,該如何寫公式呢? 再麻煩各位大大,提供幫助,謝謝大家。

大家好,
想請問如何將不同工作表,依日期區間條件加總,相關說明如下:


這是2022年1月的工作表資料, ...
gaishutsusuru 發表於 2022-6-14 22:26


請測試看看,謝謝

新增 Microsoft Excel 工作表_0615.zip (21.77 KB)

TOP

回復 2# samwang

samwang大大您好,謝謝您提供的巨集檔案。
經測試後,若改了年份,好像就會出錯了。例如,計算期間改到「2021年1月~2021年1月」,正確結果應該會是0。因為工作表的資料是2022年。但仍會顯示60。請問該如何修改呢? 謝謝。

-----
另外,想請教您,如果每個工作表的筆數都是3筆。亦即每個工作表的合計金額都會出現在各自工作表的B6儲存格。請問這樣有辦法用寫公式的方式處理嗎?謝謝您。

TOP

回復 3# gaishutsusuru

經測試後,若改了年份,好像就會出錯了。例如,計算期間改到「2021年1月~2021年1月」,正確結果應該會是0
>> 已更新如附件,請測試看看,謝謝
公式我不會,需要其他大大幫忙解題,謝謝

不同工作表-日期區間條件加總_0616.zip (25.79 KB)

TOP

回復 4# samwang

您好,經過測試後,
2022年3月~2022年5月:應該是5700,而卻顯示5730
2022年1月~2022年1月:應該是30,而卻顯示6390
……

可能要再麻煩您協助看如何修改,謝謝。

(公式的話,我再找看看,謝謝您)

TOP

本帖最後由 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

回復  samwang

您好,經過測試後,
2022年3月~2022年5月:應該是5700,而卻顯示5730
2022年1月~2022年 ...
gaishutsusuru 發表於 2022-6-16 21:23


已更新,請再測試看看,謝謝

不同工作表-日期區間條件加總_0617.zip (26.51 KB)

TOP

回復 7# samwang

samwang大大,
非常謝謝您,目前測試是可以運作的^^

TOP

回復 6# quickfixer

quickfixer大大,

謝謝您提供的巨集碼。

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

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題