使用excel vba将每天的结果转换为每周的结果
在我的excel工作表中,A列中有不同数量的日期,B列中每个日期的相关总计。这些日期有些随机,但我希望找到每周相关总计的总和。我是vba新手,在计算每周的总数时遇到了一些麻烦 我所想的psudo代码是:使用excel vba将每天的结果转换为每周的结果,vba,excel,Vba,Excel,在我的excel工作表中,A列中有不同数量的日期,B列中每个日期的相关总计。这些日期有些随机,但我希望找到每周相关总计的总和。我是vba新手,在计算每周的总数时遇到了一些麻烦 我所想的psudo代码是: buttonClicked() Dim sum As Integer, tempDate As Date, current As Date, i As Integer, j As Integer, match As Boolean sum = 0 tempDate = Ran
buttonClicked()
Dim sum As Integer, tempDate As Date, current As Date, i As Integer, j As Integer, match As Boolean
sum = 0
tempDate = Range("A1").Value
current = tempDate
For i = 1 To Rows.Count
for j = 0 to 7
tempDate = addDate(d, i, tempDate)
If cell(i,1).Value = tempDate Then sum = sum + cell(i, 2).Value
match = true
Break
End If
Next j
If match = true Then tempDate = current
Else
`next open space in column D is current
current = tempDate
`next open space in column E is sum
sum = 0
Next i
end
请告诉我是否有更好的方法来解决这个问题,除了遍历整个列表并提前7天计算之外。我应该注意到A1已经被假定为一个星期天,我不确定注释掉的行应该如何实现。非常感谢您的建议。如果您要从B列中查找一系列7行总和,那么使用本机工作表函数的公式就可以了
=SUM(INDEX(B:B, (ROW(1:1)-1)*7+1):INDEX(B:B, (ROW(1:1)-1)*7+7))
填充以捕捉连续一周的周期
如果您可以提供开始日期(例如,=MIN(a:a)
)并在连续行中向其添加7,则每周开始日期可以作为一个参考点。在E9 as中
=SUMIFS(B:B,A:A, ">="&D9,A:A, "<"&D9+7)
=SUMIFS(B:B,A:A,“>=”&D9,A:A,“在其他列中,使用以下公式为每一行分配相应的年份。周数
:
=CONCATENATE(YEAR(A1),".",TEXT(WEEKNUM(A1),"00"))
可以使用SUMIF
公式或通过PivotTable
获得每年.周的总计。数据透视表可以自动调整大小,如果您使用动态范围
作为数据源
,我可以通过vba自动化数据透视表吗?谢谢!我想我需要一个vba解决方案,因为这样我的日子将丢失,并且不会总是每天都有。有没有办法修改你的解决方案来检查这一点?没有。如果缺少一些日子,那么你甚至不知道从哪里开始,如果结束日期是7行,甚至是7天。如果你能确定任何事情,我将集中在有限的开始日期集上。至少然后,您可以使用包含所有匹配日期为>=开始日期的值,如果可以定义一组开始日期,则可以将这些日期用作每周总计的参考点。请参阅上面的我的编辑。