Excel VBA中的动态Sumif公式

时间:2017-10-17 10:35:09

标签: excel vba excel-vba

我想将excel中的Sumif公式转换为VBA动态代码。我希望这个公式总是在最后一行,可以计算我需要的东西。我做了一个宏记录,并试图插入一个整数而不是行的数字,但它没有工作。

例如,

这个月我有175排,下次我可能有200或140,其余的都保持不变。

这是我的代码,其中记录了公式:

Dim ir As Integer

ir = Range("H1", Range("H1").End(xlDown)).Rows.Count
Range("H2").End(xlDown).Offset(1, 0).Select

ActiveCell.FormulaR1C1 = _
    "=SUMIF(R[-174]C[-5]:R[-1]C[-5],""*total*"",R[-174]C:R[-1]C)"

2 个答案:

答案 0 :(得分:2)

1)您需要将最后一行变量合并到公式行中,注意确保它不在引号之内;

2)使用Long而不是Integer(更高效并处理更多行);

3)从底部开始查找最后一行(如果你只有一行);

4)无需使用Select / ActiveCell。

google.appengine.dist27.gae_override.httplib.HTTPConnection

答案 1 :(得分:2)

R1C1表示法用于以下方式:绝对R1C1或相对R [-1] C [1]。你可以使用绝对符号来消除所有这些:

Range("H2").End(xlDown).Offset(1, 0).FormulaR1C1 = _
    "=SUMIF(R1C[-5]:R[-1]C[-5],""*total*"",R1C:R[-1]C)"

不确定是否来自第一行(R1),未在您的代码中指定。