Excel 具有可变范围的SUMIF

Excel 具有可变范围的SUMIF,excel,vba,variables,range,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

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

我有一个循环来迭代我的工作表的所有行,对于每一次迭代,我都希望生成一个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)

您可以获得类似以下范围的地址
范围(“B2:D2”)。地址

这将产生一个绝对范围
$B$2:$D$2

您可以为pass it True/False来获取相对地址
范围(“B2:D2”)。地址(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
或者,您可以设置如下范围的公式:
范围(“A1:A4”)。公式=“=SUMIF(B1:D1,1)”

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


将同一单元格的公式更改5次有什么意义?如果您在其他地方更改活动单元格,请向我们显示更多代码。为了便于理解,我省略了一些部分1)2)在第
Dim行中,MaxColumn作为整数
variable
row
具有类型
variable
。将其更改为
Dim row as Integer,MaxColumn as Integer
3)您可以对整个范围应用公式,而无需循环:
range(A1:A5)。公式=“=SUMIF(B1:D1,1)”
,excel将为每个单元格/行自动调整它