我想将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)"
答案 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),未在您的代码中指定。