gpt4 book ai didi

vba - 根据另一列中月份的开始日期和日期对行值求和

转载 作者:行者123 更新时间:2023-12-02 11:04:06 25 4
gpt4 key购买 nike

附加图片以便更好地理解问题:

enter image description here

这里,A 列包含日期,B 列包含每日金额,C 列包含每天的累计金额。

我想在每个月底停止基于A列的累计计算,并开始重新计算下个月。就像图像所示。

我使用下面的代码来查找月末和当月第一天分配 B=C,但很困惑如何从第二天开始计算该月的累计金额。

如果有人为我提供实现这一目标的逻辑,我将不胜感激。

Sub MonthInt()

Dim MaxGain As Workbook
Dim DailyData As Worksheet
Dim n As Long, J As Long

Set MaxGain = Excel.Workbooks("MaxGain.xlsm")
Set DailyData = MaxGain.Worksheets("DailyData")


n = DailyData.Cells(Rows.Count, "A").End(xlUp).Row


DailyData.Range("B2") = DailyData.Range("C2")

For J = 3 To n

If DailyData.Range("A" & J) = Application.WorksheetFunction.EoMonth(DailyData.Range("A" & J), 0) Then

DailyData.Range("C" & J + 1) = DailyData.Range("B" & J)


End If

Next
End Sub

最佳答案

为什么需要 VBA 来获得所需的输出?

您可以使用公式来实现所需的输出。

试试这个...

在C2中

=B2

在C3中

=IF(MONTH(A3)<>MONTH(A2),B3,C2+B3)

并将其复制下来。

编辑:

如果你想通过VBA实现公式,你可以尝试这样的事情......

Sub MonthInt()
Dim MaxGain As Workbook
Dim DailyData As Worksheet
Dim n As Long

Set MaxGain = Excel.Workbooks("MaxGain.xlsm")
Set DailyData = MaxGain.Worksheets("DailyData")

n = DailyData.Cells(Rows.Count, "A").End(xlUp).Row

With DailyData
.Range("C2").Value = .Range("B2").Value
.Range("C3:C" & n).Formula = "=IF(MONTH(A3)<>MONTH(A2),B3,C2+B3)"
.Range("C3:C" & n).Value = .Range("C3:C" & n).Value
End With
End Sub

enter image description here

关于vba - 根据另一列中月份的开始日期和日期对行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com