我想制作这个简单的代码,但我没有找到任何解决方案。
我有一个循环来迭代我的工作表的所有行,并且对于每次迭代,我想做一个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)
答案 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会根据您的行自动增加范围。