Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
基于条件在vba中添加行和列_Vba_Excel - Fatal编程技术网

基于条件在vba中添加行和列

基于条件在vba中添加行和列,vba,excel,Vba,Excel,我有一些数据,我试图计算每个月1-15日的每个变量的总和,然后是每月剩余的天数。 数据出现在名为“数据”的表中,如下所示 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

我有一些数据,我试图计算每个月1-15日的每个变量的总和,然后是每月剩余的天数。 数据出现在名为“数据”的表中,如下所示

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

请帮助我找到更好的方法。

代码中有一个错误,您在第一次求和时选择了“汇总”表,但在第二次求和时,您没有切换回其他表

这是一种更好的方法,无需在图纸之间切换:

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

希望这有帮助。

6}。arr是一个从零开始的索引。e、 g.{0-6}不是{1-9}