如何为几组数据dynamicbuild立一个COUNTIFS公式(RunTime Error'1004')

我是VBA新手,并inheritance了我目前正在更新的其他人的需求跟踪电子表格。 这些需求已经被分组并且与当前的VBA代码正确地求和。 我试图更新的特定块(例如,有多个级别):

For groups = 1 To i ' Level 3 grouping Range(Cells(Start(groups), 1), Cells(Finish(groups), 1)).Rows.Group Range("G" & Start(groups) - 1).Formula = "=COUNTIF(E" & Start(groups) & ":E" & Finish(groups) & ",""Requirement"")" Range("H" & Start(groups) - 1).Formula = "=COUNTIF(H" & Start(groups) & ":H" & Finish(groups) & ",""Ok"")" Next 

我需要为COUNTIF添加一个额外的条件,所以我使用了COUNTIFS。 我只想计算不是4级的要求(他们可以是1,2,3或4级)。 我尝试了以下逻辑的变体:

 For groups = 1 To i ' Level 3 grouping Range(Cells(Start(groups), 1), Cells(Finish(groups), 1)).Rows.Group Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & "," & "Requirement" & ",S" & Start(groups) & ":S" & Finish(groups) & ",""<>4"")" Range("H" & Start(groups) - 1).Formula = "=COUNTIF(H" & Start(groups) & ":H" & Finish(groups) & ",""Ok"")" Next 

我试图手动input公式(s)手动正确的单元格中执行macros之前,公式更新正确的总和。 但是,运行macros时,我总是得到以下内容:运行时错误“1004”Application_defined或object_defined错误

我意识到我有很多报价,有些可能会巩固; 然而,我更关心为什么逻辑失败。 能否请你帮忙? 我在这个探索不同的途径上花了太多的时间。

先谢谢你!

在此之后,我将不得不学习如何隐藏每个“4级”要求(这意味着行和以下2行),但这是另一个话题。 我想我会尝试更容易的逻辑..

你在双引号内使用双引号是你的问题。 改用Chr(34)

 Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & "," & "Requirement" & ",S" & Start(groups) & ":S" & Finish(groups) & "," & Chr(34) & "<>4" & Chr(34) & ")" 

Chr()方法在您指定的索引号处返回ASCII字符。 在这种情况下,Chr(34)返回双引号字符。 有关ASCII字符的更多信息,请查看下表:

http://www.asciitable.com/

编辑:

或者,也可以使用双引号,如下所示:

 Range("A1").formula = "=COUNTIF(B:B,""<>4"")" 

代替

 Range("A1").formula = "=COUNTIF(B:B," & Chr(34) & "<>4" & Chr(34) & ")"