SUMIF具有可变范围

时间:2014-05-08 12:23:18

标签: excel vba variables range

我想制作这个简单的代码,但我没有找到任何解决方案。

我有一个循环来迭代我的工作表的所有行,并且对于每次迭代,我想做一个sumif,但范围是可变的。

所以我想要这样的东西:

Dim row,MaxColumn as Integer
MaxColumn = 5
For row= 1 to 5
ActiveSheet.Cells(row, MaxColumn + 1).Select
ActiveCell.Formula = "=SUMIF("B2:D(here I want a variable D1 to 5 range with row variable),""=1"")"

next row

我不知道如何完成这个。

我知道我可以用它来选择带变量的范围,但我不能在SUMIF上使用它。

ActiveSheet.Range("B" & row & ":D" & row)

1 个答案:

答案 0 :(得分:2)

您可以获取此Range("B2:D2").Address之类的范围的地址 这将产生绝对范围$B$2:$D$2

你可以给它传递真/假来获得相对地址Range("B2:D2").Address(False, False)
产生范围B2:D2

以下是一个例子:

Dim TotalRows As Long
Dim i As Long

' Get the total number of rows in the current sheet
TotalRows = ActiveSheet.UsedRange.Rows.Count

' Iterate through all rows
For i = 1 To TotalRows
    ' Set the current cells formula range to Bi:Di where i = the current row
    Range("A" & i).Formula = "=SUMIF(" & Range("B" & i & ":D" & i).Address(False, False) & ", 1)"
Next

或者,您可以设置如下范围的公式:
Range("A1:A4").Formula = "=SUMIF(B1:D1,1)"

Excel会根据您的行自动增加范围。

SUMIF Example