我正在尝试使用VBA将公式放入单元格中。这就是公式。
Range(Cells(2, 15)).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7clrow,Classes!R[]C[-13]))"
错误在右边的引号内。我尝试过使用A1表示法,以及我能想到的其他一切。我之前和之后都有几条非常相似的线条,所有工作都很好,所以我不太清楚我错过了什么。谢谢你的帮助。
编辑:以下是几个人建议的行:
Cells(2, 15).FormulaR1C1 = " =SUMPRODUCT(COUNTIF('All Failing Classes'!$G$2:$G$" & lrow & ",Classes!B2))"
或
Cells(2, 15).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7C" & lrow & ",Classes!R[]C[-13]))"
据我所知,这是相同的。
当Mat帮我时,我不小心在=前面添加了一个空格来创建这条线:
Cells(2, 15).FormulaR1C1 = " =SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7C" & lrow & ",Classes!R[]C[-13]))"
并且该行进入正常状态?当我移动到XL并占用空间时,公式按预期工作。这有助于缩小我做错的事情吗?
编辑2:这就是我做错了 - 我在引用另一张纸的那一行之前重新定义了一个变量。当我这样做时,该程序显然仍然引用该表,并给了我我的问题。当我更换并在单元格之前添加工作表(工作表(blah).cellc(blah)然后它工作。感谢所有帮助过的人(特别是Mat)。
答案 0 :(得分:1)
=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7clrow,Classes!R[]C[-13]))
是否可以作为公式?
如果它不起作用(不,它没有),那么Excel本身不能将破碎的公式分配给你输入的单元格 - 出于同样的原因,VBA将不会能够做到这一点。
所以你的意思是{V}在被插入公式之前要由lrow
进行评估,对吗?为此,VBA需要能够看到lrow
变量。作为一个字符串文字,它没有,也无法猜测你的意图:就VBA而言,这就是正在发生的事情:
SomeObject.SomeProperty = "some string literal"
就是这样。
您需要将变量的值连接到字符串文字中,这是在VBA中连接字符串的方式:
SomeObject.SomeProperty = "some " & someVariable & " string literal"
换句话说,使赋值的右侧为字符串值表达式,而不仅仅是文字:
"=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7c" & lrow & ",Classes!R[]C[-13]))"
答案 1 :(得分:0)
试试这个
Cells(2, 15).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7c" & lrow & ",Classes!R[]C[-13]))"
我猜测lrow是一个变量...