VBA SUMIF函数更改sum_ranges条件

我是VBA新手。 我正在尝试使用循环来执行sumif函数。 我希望函数在经过时更改其sum_range标准。

我试着先使用下面的代码:

While cls <= num_cols While rws <= num_rows Cells(rws, cls).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!D:D)" rws = rws + 1 Wend rws = 7 cls = cls + 1 Wend 

正如你在代码中注意到的,sum_range是D:D。 我希望能够循环,并在下一次将其更改为E:E,并继续前进直到我到达最后一列。

我硬编码如下:

 While rws <= num_rows Cells(rws, 2).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!D:D)" rws = rws + 1 Wend rws = 7 While rws <= num_rows Cells(rws, 3).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!E:E)" rws = rws + 1 Wend rws = 7 While rws <= num_rows Cells(rws, 4).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!F:F)" rws = rws + 1 Wend rws = 7 While rws <= num_rows Cells(rws, 5).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!G:G)" rws = rws + 1 Wend rws = 7 

任何build议将不胜感激。

您可以使用for循环,而chr()函数将整数转换为字母。 (cls + 64 + 2)允许你对“B”说cls = 2 ,然后加64得到你66,这是“B”的ASCII字符。 为了抵消,如果cls = 2会给你“D”,只需加上额外的2.(你当然可以把它组合起来,所以它是chr(cls + 66) ,但我想certificate为什么它会是66)。

 While cls <= num_cols While rws <= num_rows Cells(rws, cls).value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & _ ",'BW YTD - Act&Plan'!" & Chr(cls + 64 + 2) & ":" & Chr(cls + 64 + 2) & ")" rws = rws + 1 Wend rws = 7 Wend