根据条件在vba中添加行和列

我有一些数据,我试图计算每个月的第1-15个每个variables的总和,然后是月的剩余天数。 数据存在于名为“data”的表中,就像

Var 1-Jan 2-Jan 3-Jan 4-Jan 5-Jan 6-Jan 7-Jan 8-Jan 9-Jan 10-Jan 11-Jan 12-Jan 13-Jan 14-Jan 15-Jan 16-Jan... var1 8 4 14 18 1 12 36 18 38 37 11 43 5 30 40 1 var2 29 39 40 10 12 21 27 31 10 21 5 14 14 33 17 13 var3 46 27 5 32 4 28 8 15 46 19 19 24 44 15 25 20 var4 5 46 27 21 10 19 26 34 38 38 33 16 23 2 26 8 var5 25 8 32 37 45 13 45 45 42 31 10 4 8 46 30 20 

数据是全年的,但我正在尝试一月游历时间。 输出在表格“摘要”中,并且应该是格式

 Var jan 1-15 jan 15-31 feb 1-15 feb 16-28 mar 1-15 mar 15-31 var1 sum sum sum sum... var2 sum... var3 var4 var5 

我正在尝试写如vba代码

 Sub sum_data() Dim flag1, flag2, k, sum Dim arr As Variant arr = Array(2, 15, 16, 15, 13, 15, 16) flag1 = arr(0) For i = 2 To 7 Sheets("data").Select flag2 = flag1 + arr(i-1) - 1 For j = 2 To 5 sum = Application.sum(Range(Cells(j, flag1), Cells(j, flag2))) Sheets("summary").Select Cells(j, i) = sum Next j flag1 = flag2 + 1 Next i End Sub 

请帮助我find一个更好的方法来做到这一点。

代码中有一个错误,在第一笔总额中select“汇总”表单,但是第二次总计您不要切换回另一个表单。

这是一个更好的方法,而不需要在纸张之间切换:

 For i = 2 To 7 flag2 = flag1 + arr(i - 1) - 1 For j = 2 To 5 sum = Application.sum(Sheets("data").Range(Cells(j, flag1), Cells(j, flag2))) Sheets("summary").Cells(j, i) = sum Next j flag1 = flag2 + 1 Next i 

希望这可以帮助。