SUBTOTAL超过254行

时间:2014-04-02 21:28:44

标签: excel excel-formula

我正在通过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行到最大行?如果有一个简单的答案,请您逐步解释一下吗?感谢。

2 个答案:

答案 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行的另一个选项是使用SUMPRODUCTMOD。这不具有小计的特征,例如不总计隐藏的行,但它将是一个更简单的公式,例如:

=SUMPRODUCT(A1:A100*(MOD(ROW($A$1:$A$100),13)=0))