Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用excel vba将每天的结果转换为每周的结果_Vba_Excel - Fatal编程技术网

使用excel vba将每天的结果转换为每周的结果

使用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

在我的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 = 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天。如果你能确定任何事情,我将集中在有限的开始日期集上。至少然后,您可以使用包含所有匹配日期为>=开始日期的值,如果可以定义一组开始日期,则可以将这些日期用作每周总计的参考点。请参阅上面的我的编辑。