我正在通过VBA自动生成包含预算数据的电子表格。行是可变的。我将以下代码用于R1C1公式。变量r是行计数器。
'-----------------
'Subtotal formula
'-----------------
'Build formula string
formulaString = "=SUBTOTAL(109"
For i = 13 To r - 13
formulaString = formulaString & ",R[" & i & "]C"
i = i + 11
Next i
formulaString = formulaString & ")"
'Subtotal formulas
.Range("I5:U6").FormulaR1C1 = formulaString
这很有效,直到引用超过254.是否有一种简单的方法来构建这个R1C1公式,使得:对于范围I5中的每个单元格:U6,SUBTOTAL 109每隔第13行到最大行?如果有一个简单的答案,请您逐步解释一下吗?感谢。
答案 0 :(得分:1)
如果您无法对数据进行排序以避免这种情况,或者在用户定义的函数中运行总和,则可以添加第二个循环来计数直到254,当您点击254时,关闭公式字符串并重新打开一个,如在这个更新的代码中:
'Build formula string
formulaString = "=SUBTOTAL(109"
lCount=1
For i = 13 To r - 13
formulaString = formulaString & ",R[" & i & "]C"
i = i + 11
lcount=lcount+1
if lcount>250 then
formulaString = formulaString & ")+ SUBTOTAL(109"
lcount=1
end if
Next i
formulaString = formulaString & ")"
'Subtotal formulas
.Range("I5:U6").FormulaR1C1 = formulaString
答案 1 :(得分:1)
总计第13行的另一个选项是使用SUMPRODUCT
和MOD
。这不具有小计的特征,例如不总计隐藏的行,但它将是一个更简单的公式,例如:
=SUMPRODUCT(A1:A100*(MOD(ROW($A$1:$A$100),13)=0))